From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Mon, 13 Jul 2020 00:37:06 +0200 Subject: Add menu item to view source --- chrome/android/java/res/menu/custom_tabs_menu.xml | 3 +++ chrome/android/java/res/menu/main_menu.xml | 2 ++ .../chromium/chrome/browser/ChromeActivity.java | 2 ++ .../chrome/browser/ChromeTabbedActivity.java | 2 ++ .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++ .../CustomTabAppMenuPropertiesDelegate.java | 1 + .../ui/android/strings/android_chrome_strings.grd | 3 +++ 7 files changed, 27 insertions(+) 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 @@ -46,6 +46,9 @@ + 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 @@ -66,6 +66,8 @@ android:title="@string/menu_find_in_page" /> + } catch (ActivityNotFoundException e) { Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show(); } + } else if (id == R.id.view_source_id) { + currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString())); } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) { final boolean reloadOnChange = !currentTab.isNativePage(); final boolean usingDesktopUserAgent = 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 @@ -1838,6 +1838,8 @@ public class ChromeTabbedActivity 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.getUrlString())); } else if (id == R.id.open_recently_closed_tab) { TabModel currentModel = mTabModelSelectorImpl.getCurrentModel(); if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab(); 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 @@ -288,6 +288,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate isChromeScheme, isFileScheme, isContentScheme, isIncognito, url)); updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */); + updateViewSourceMenuItem(menu, currentTab); // Only display reader mode settings menu option if the current page is in reader mode. menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab)); @@ -625,6 +626,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } } + /** + * 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); + String url = currentTab.getUrlString(); + viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:")); + } + /** * 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 @@ -214,6 +214,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat } updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible); + updateViewSourceMenuItem(menu, currentTab); prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible); } } 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 @@ -309,6 +309,9 @@ CHAR-LIMIT guidelines: Other Google services + + View source + Google services -- 2.17.1