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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  5. ---
  6. chrome/android/java/res/menu/custom_tabs_menu.xml | 3 +++
  7. chrome/android/java/res/menu/main_menu.xml | 3 +++
  8. .../chrome/browser/ChromeTabbedActivity.java | 2 ++
  9. .../chrome/browser/app/ChromeActivity.java | 5 +++++
  10. .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
  11. .../CustomTabAppMenuPropertiesDelegate.java | 1 +
  12. .../ui/android/strings/android_chrome_strings.grd | 4 ++++
  13. 7 files changed, 32 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. @@ -106,6 +106,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/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  41. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  42. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  43. @@ -2131,6 +2131,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
  44. NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
  45. }
  46. RecordUserAction.record("MobileMenuDownloadManager");
  47. + } else if (id == R.id.view_source_id) {
  48. + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrl().getSpec()));
  49. } else if (id == R.id.open_recently_closed_tab) {
  50. TabModel currentModel = mTabModelSelector.getCurrentModel();
  51. if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedEntry();
  52. 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
  53. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  54. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  55. @@ -2510,6 +2510,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  56. return true;
  57. }
  58. + if (id == R.id.view_source_id) {
  59. + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrl().getSpec()));
  60. + return true;
  61. + }
  62. +
  63. if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
  64. boolean usingDesktopUserAgent =
  65. currentTab.getWebContents().getNavigationController().getUseDesktopUserAgent();
  66. 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
  67. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  68. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  69. @@ -506,6 +506,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  70. isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
  71. updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme);
  72. + updateViewSourceMenuItem(menu, currentTab);
  73. updateAutoDarkMenuItem(menu, currentTab, isChromeScheme);
  74. @@ -1129,6 +1130,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  75. stopPriceTrackingMenuItem.setVisible(false);
  76. }
  77. + /**
  78. + * Updates the view source menu item's state.
  79. + *
  80. + * @param menu {@link Menu} for view source.
  81. + * @param currentTab Current tab being displayed.
  82. + */
  83. + protected void updateViewSourceMenuItem(
  84. + Menu menu, Tab currentTab) {
  85. + MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
  86. + String url = currentTab.getUrl().getSpec();
  87. + viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:"));
  88. + }
  89. +
  90. /**
  91. * Updates the request desktop site item's state.
  92. *
  93. 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
  94. --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  95. +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  96. @@ -219,6 +219,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
  97. updateRequestDesktopSiteMenuItem(
  98. menu, currentTab, requestDesktopSiteVisible, isChromeScheme);
  99. + updateViewSourceMenuItem(menu, currentTab);
  100. prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
  101. }
  102. }
  103. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  104. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  105. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  106. @@ -309,6 +309,10 @@ CHAR_LIMIT guidelines:
  107. Bluetooth
  108. </message>
  109. + <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
  110. + View source
  111. + </message>
  112. +
  113. <message name="IDS_UNSUPPORTED" desc="Message displayed to the user when an attempted action is not supported.">
  114. Unsupported
  115. </message>
  116. --
  117. 2.25.1