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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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 | 2 ++
  7. .../chromium/chrome/browser/ChromeActivity.java | 2 ++
  8. .../chrome/browser/ChromeTabbedActivity.java | 2 ++
  9. .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
  10. .../CustomTabAppMenuPropertiesDelegate.java | 1 +
  11. .../ui/android/strings/android_chrome_strings.grd | 3 +++
  12. 7 files changed, 27 insertions(+)
  13. diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
  14. --- a/chrome/android/java/res/menu/custom_tabs_menu.xml
  15. +++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
  16. @@ -46,6 +46,9 @@
  17. <item android:id="@+id/add_to_homescreen_id"
  18. android:title="@string/menu_add_to_homescreen"
  19. android:orderInCategory="2" />
  20. + <item android:id="@+id/view_source_id"
  21. + android:title="@string/view_source"
  22. + android:orderInCategory="2" />
  23. <item android:id="@+id/open_webapk_id"
  24. android:title="@string/menu_open_webapk"
  25. android:orderInCategory="2" />
  26. diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
  27. --- a/chrome/android/java/res/menu/main_menu.xml
  28. +++ b/chrome/android/java/res/menu/main_menu.xml
  29. @@ -66,6 +66,8 @@
  30. android:title="@string/menu_find_in_page" />
  31. <item android:id="@+id/add_to_homescreen_id"
  32. android:title="@string/menu_add_to_homescreen" />
  33. + <item android:id="@+id/view_source_id"
  34. + android:title="@string/view_source" />
  35. <item android:id="@+id/open_webapk_id"
  36. android:title="@string/menu_open_webapk" />
  37. <item android:id="@+id/request_desktop_site_row_menu_id"
  38. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
  39. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
  40. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
  41. @@ -2010,6 +2010,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  42. } catch (ActivityNotFoundException e) {
  43. Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
  44. }
  45. + } else if (id == R.id.view_source_id) {
  46. + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
  47. } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
  48. final boolean reloadOnChange = !currentTab.isNativePage();
  49. final boolean usingDesktopUserAgent =
  50. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  51. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  52. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  53. @@ -1838,6 +1838,8 @@ public class ChromeTabbedActivity
  54. NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
  55. }
  56. RecordUserAction.record("MobileMenuDownloadManager");
  57. + } else if (id == R.id.view_source_id) {
  58. + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
  59. } else if (id == R.id.open_recently_closed_tab) {
  60. TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
  61. if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
  62. 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
  63. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  64. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  65. @@ -288,6 +288,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  66. isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
  67. updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
  68. + updateViewSourceMenuItem(menu, currentTab);
  69. // Only display reader mode settings menu option if the current page is in reader mode.
  70. menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab));
  71. @@ -625,6 +626,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  72. }
  73. }
  74. + /**
  75. + * Updates the view source menu item's state.
  76. + *
  77. + * @param menu {@link Menu} for view source.
  78. + * @param currentTab Current tab being displayed.
  79. + */
  80. + protected void updateViewSourceMenuItem(
  81. + Menu menu, Tab currentTab) {
  82. + MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
  83. + String url = currentTab.getUrlString();
  84. + viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:"));
  85. + }
  86. +
  87. /**
  88. * Updates the request desktop site item's state.
  89. *
  90. 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
  91. --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  92. +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  93. @@ -214,6 +214,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
  94. }
  95. updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
  96. + updateViewSourceMenuItem(menu, currentTab);
  97. prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
  98. }
  99. }
  100. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  101. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  102. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  103. @@ -309,6 +309,9 @@ CHAR-LIMIT guidelines:
  104. <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.">
  105. Other Google services
  106. </message>
  107. + <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
  108. + View source
  109. + </message>
  110. <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]">
  111. Google services
  112. </message>
  113. --
  114. 2.17.1