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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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 | 5 +++++
  10. .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
  11. .../CustomTabAppMenuPropertiesDelegate.java | 1 +
  12. .../ui/android/strings/android_chrome_strings.grd | 3 +++
  13. 8 files changed, 34 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. @@ -94,6 +94,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. @@ -145,6 +145,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. @@ -1881,6 +1881,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. @@ -2287,6 +2287,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  69. return true;
  70. }
  71. + if (id == R.id.view_source_id) {
  72. + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
  73. + return true;
  74. + }
  75. +
  76. if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
  77. boolean usingDesktopUserAgent =
  78. currentTab.getWebContents().getNavigationController().getUseDesktopUserAgent();
  79. 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
  80. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  81. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
  82. @@ -537,6 +537,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  83. }
  84. updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
  85. + updateViewSourceMenuItem(menu, currentTab);
  86. // Only display reader mode settings menu option if the current page is in reader mode.
  87. menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab));
  88. @@ -950,6 +951,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
  89. }
  90. }
  91. + /**
  92. + * Updates the view source menu item's state.
  93. + *
  94. + * @param menu {@link Menu} for view source.
  95. + * @param currentTab Current tab being displayed.
  96. + */
  97. + protected void updateViewSourceMenuItem(
  98. + Menu menu, Tab currentTab) {
  99. + MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
  100. + String url = currentTab.getUrlString();
  101. + viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:"));
  102. + }
  103. +
  104. /**
  105. * Updates the request desktop site item's state.
  106. *
  107. 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
  108. --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  109. +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
  110. @@ -228,6 +228,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
  111. updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
  112. MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id);
  113. MenuItem openWebApkItem = menu.findItem(R.id.open_webapk_id);
  114. + updateViewSourceMenuItem(menu, currentTab);
  115. prepareAddToHomescreenMenuItem(
  116. homescreenItem, null, openWebApkItem, menu, currentTab, addToHomeScreenVisible);
  117. }
  118. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  119. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  120. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  121. @@ -344,6 +344,9 @@ CHAR-LIMIT guidelines:
  122. <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.">
  123. Other Google services
  124. </message>
  125. + <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
  126. + View source
  127. + </message>
  128. <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]">
  129. Google services
  130. </message>
  131. --
  132. 2.17.1