Add-menu-item-to-view-source.patch 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. From: csagan5 <32685696+csagan5@users.noreply.github.com>
  2. Date: Mon, 13 Jul 2020 00:37:06 +0200
  3. Subject: Add menu item to view source
  4. ---
  5. chrome/android/java/res/menu/custom_tabs_menu.xml | 3 +++
  6. chrome/android/java/res/menu/main_menu.xml | 3 +++
  7. chrome/android/java/res/menu/main_menu_regroup.xml | 3 +++
  8. .../chrome/browser/ChromeTabbedActivity.java | 2 ++
  9. .../chrome/browser/app/ChromeActivity.java | 2 ++
  10. .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
  11. .../CustomTabAppMenuPropertiesDelegate.java | 1 +
  12. .../ui/android/strings/android_chrome_strings.grd | 3 +++
  13. 8 files changed, 31 insertions(+)
  14. diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
  15. --- a/chrome/android/java/res/menu/custom_tabs_menu.xml
  16. +++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
  17. @@ -46,6 +46,9 @@
  18. <item android:id="@+id/add_to_homescreen_id"
  19. android:title="@string/menu_add_to_homescreen"
  20. android:orderInCategory="2" />
  21. + <item android:id="@+id/view_source_id"
  22. + android:title="@string/view_source"
  23. + android:orderInCategory="2" />
  24. <item android:id="@+id/open_webapk_id"
  25. android:title="@string/menu_open_webapk"
  26. android:orderInCategory="2" />
  27. diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
  28. --- a/chrome/android/java/res/menu/main_menu.xml
  29. +++ b/chrome/android/java/res/menu/main_menu.xml
  30. @@ -91,6 +91,9 @@
  31. <item android:id="@+id/add_to_homescreen_id"
  32. android:title="@string/menu_add_to_homescreen"
  33. android:icon="@drawable/ic_add_to_home_screen" />
  34. + <item android:id="@+id/view_source_id"
  35. + android:title="@string/view_source"
  36. + android:icon="@drawable/ic_drive_document_24dp" />
  37. <item android:id="@+id/open_webapk_id"
  38. android:title="@string/menu_open_webapk"
  39. android:icon="@drawable/ic_add_to_home_screen" />
  40. diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml
  41. --- a/chrome/android/java/res/menu/main_menu_regroup.xml
  42. +++ b/chrome/android/java/res/menu/main_menu_regroup.xml
  43. @@ -142,6 +142,9 @@
  44. <item android:id="@+id/add_to_homescreen_id"
  45. android:title="@string/menu_add_to_homescreen"
  46. android:icon="@drawable/ic_add_to_home_screen" />
  47. + <item android:id="@+id/view_source_id"
  48. + android:title="@string/view_source"
  49. + android:icon="@drawable/ic_drive_document_24dp" />
  50. <item android:id="@+id/open_webapk_id"
  51. android:title="@string/menu_open_webapk"
  52. android:icon="@drawable/ic_add_to_home_screen" />
  53. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  54. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  55. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  56. @@ -1850,6 +1850,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
  57. NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
  58. }
  59. RecordUserAction.record("MobileMenuDownloadManager");
  60. + } else if (id == R.id.view_source_id) {
  61. + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
  62. } else if (id == R.id.open_recently_closed_tab) {
  63. TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
  64. if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
  65. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  66. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  67. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  68. @@ -2082,6 +2082,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  69. } catch (ActivityNotFoundException e) {
  70. Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
  71. }
  72. + } else if (id == R.id.view_source_id) {
  73. + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
  74. } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
  75. final boolean reloadOnChange = !currentTab.isNativePage();
  76. final boolean usingDesktopUserAgent =
  77. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  78. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  79. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  80. @@ -519,6 +519,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  81. }
  82. updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
  83. + updateViewSourceMenuItem(menu, currentTab);
  84. // Only display reader mode settings menu option if the current page is in reader mode.
  85. menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab));
  86. @@ -932,6 +933,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  87. }
  88. }
  89. + /**
  90. + * Updates the view source menu item's state.
  91. + *
  92. + * @param menu {@link Menu} for view source.
  93. + * @param currentTab Current tab being displayed.
  94. + */
  95. + protected void updateViewSourceMenuItem(
  96. + Menu menu, Tab currentTab) {
  97. + MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
  98. + String url = currentTab.getUrlString();
  99. + viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:"));
  100. + }
  101. +
  102. /**
  103. * Updates the request desktop site item's state.
  104. *
  105. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  106. --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  107. +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  108. @@ -225,6 +225,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
  109. updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
  110. MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id);
  111. MenuItem openWebApkItem = menu.findItem(R.id.open_webapk_id);
  112. + updateViewSourceMenuItem(menu, currentTab);
  113. prepareAddToHomescreenMenuItem(
  114. homescreenItem, null, openWebApkItem, menu, currentTab, addToHomeScreenVisible);
  115. }
  116. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  117. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  118. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  119. @@ -344,6 +344,9 @@ CHAR-LIMIT guidelines:
  120. <message name="IDS_SERVICES_CATEGORY_TITLE" desc="Title for the group of preferences that control non-personalized Google services. This group contains preferences for data that is not tied to user's Google Account.">
  121. Other Google services
  122. </message>
  123. + <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
  124. + View source
  125. + </message>
  126. <message name="IDS_PREFS_GOOGLE_SERVICES" desc="Title for the group of preferences that control non-personalized Google services. This group contains preferences for data that is not tied to user's Google Account. [CHAR-LIMIT=40]">
  127. Google services
  128. </message>
  129. --
  130. 2.17.1