Files
cromite/build/patches/Add-menu-item-to-view-source.patch
T
2025-06-24 16:26:13 +02:00

154 lines
8.8 KiB
Diff

From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 13 Jul 2020 00:37:06 +0200
Subject: Add menu item to view source
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../android/java/res/menu/custom_tabs_menu.xml | 3 +++
chrome/android/java/res/menu/main_menu.xml | 3 +++
.../chrome/browser/ChromeTabbedActivity.java | 2 ++
.../chrome/browser/app/ChromeActivity.java | 5 +++++
.../appmenu/AppMenuPropertiesDelegateImpl.java | 17 +++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 2 +-
.../TabbedAppMenuPropertiesDelegate.java | 6 +++---
.../android/strings/android_chrome_strings.grd | 4 ++++
8 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -73,6 +73,9 @@ found in the LICENSE file.
<item android:id="@+id/universal_install"
android:title="@string/menu_add_to_homescreen"
android:orderInCategory="2" />
+ <item android:id="@+id/view_source_id"
+ android:title="@string/view_source"
+ android:orderInCategory="2" />
<item android:id="@+id/open_webapk_id"
android:title="@string/menu_open_webapk"
android:orderInCategory="2" />
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
+++ b/chrome/android/java/res/menu/main_menu.xml
@@ -131,6 +131,9 @@ found in the LICENSE file.
<item android:id="@+id/universal_install"
android:title="@string/menu_add_to_homescreen"
android:icon="@drawable/ic_add_to_home_screen" />
+ <item android:id="@+id/view_source_id"
+ android:title="@string/view_source"
+ android:icon="@drawable/ic_drive_document_24dp" />
<item android:id="@+id/open_webapk_id"
android:title="@string/menu_open_webapk"
android:icon="@drawable/ic_open_webapk" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -3434,6 +3434,8 @@ public class ChromeTabbedActivity extends ChromeActivity {
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
}
RecordUserAction.record("MobileMenuDownloadManager");
+ } else if (id == R.id.view_source_id) {
+ currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrl().getSpec()));
} else if (id == R.id.open_recently_closed_tab) {
TabModel currentModel = mTabModelSelector.getCurrentModel();
if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedEntry();
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
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -2576,6 +2576,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
return doOpenWebApk(currentTab);
}
+ if (id == R.id.view_source_id) {
+ currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrl().getSpec()));
+ return true;
+ }
+
if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
boolean usingDesktopUserAgent =
currentTab.getWebContents().getNavigationController().getUseDesktopUserAgent();
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
--- 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
@@ -864,6 +864,23 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
}
}
+ /**
+ * Updates the view source menu item's state.
+ *
+ * @param menu {@link Menu} for view source.
+ * @param currentTab Current tab being displayed.
+ */
+ protected void updateViewSourceMenuItem(
+ Menu menu, Tab currentTab) {
+ MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
+ boolean visible = false;
+ if (currentTab != null) {
+ String url = currentTab.getUrl().getSpec();
+ visible = !url.isEmpty() && !url.startsWith("view-source:");
+ }
+ viewSourceMenuItem.setVisible(visible);
+ }
+
/**
* Updates the request desktop site item's state.
*
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
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -331,7 +331,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
// --- Request Desktop Site ---
updateRequestDesktopSiteMenuItem(
menu, currentTab, requestDesktopSiteVisible, isNativePage);
-
+ updateViewSourceMenuItem(menu, currentTab);
// --- Translate ---
prepareTranslateMenuItem(menu, currentTab);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
@@ -173,7 +173,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
if (menuGroup == MenuGroup.PAGE_MENU) {
preparePageMenu(menu, currentTab, handler, isIncognito);
}
- prepareCommonMenuItems(menu, menuGroup, isIncognito);
+ prepareCommonMenuItems(menu, menuGroup, isIncognito, currentTab);
}
private void setMenuGroupVisibility(@MenuGroup int menuGroup, Menu menu) {
@@ -338,7 +338,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
isNativePage, isFileScheme, isContentScheme, isIncognito, url));
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isNativePage);
-
+ updateViewSourceMenuItem(menu, currentTab);
updateAutoDarkMenuItem(menu, currentTab, isNativePage);
// Only display reader mode settings menu option if the current page is in reader mode.
@@ -371,7 +371,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
&& UrlUtilities.isNtpUrl(currentTab.getUrl());
}
- private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
+ private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito, Tab currentTab) {
boolean always_incognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito();
if (always_incognito) {
final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id);
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -321,6 +321,10 @@ CHAR_LIMIT guidelines:
Collaboration
</message>
+ <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
+ View source
+ </message>
+
<!-- Sign-in, sync and personalization preferences -->
<message name="IDS_PREFS_SECTION_ACCOUNT_AND_GOOGLE_SERVICES" desc="Title for the group of account-related entries and google services in Settings. [CHAR_LIMIT=32]">
You and Google
--