122 lines
6.7 KiB
Diff
122 lines
6.7 KiB
Diff
From: Serg <serg.zhukovsky@gmail.com>
|
|
Date: Tue, 31 Jan 2017 22:12:27 -0500
|
|
Subject: Add exit menu item
|
|
|
|
Corrected Exit functionality
|
|
|
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|
---
|
|
chrome/android/java/res/values/ids.xml | 1 +
|
|
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 ++++
|
|
.../org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
|
|
.../chrome/browser/init/ChromeLifetimeController.java | 2 ++
|
|
.../tabbed_mode/TabbedAppMenuPropertiesDelegate.java | 7 +++++++
|
|
.../browser/ui/android/strings/android_chrome_strings.grd | 3 +++
|
|
6 files changed, 23 insertions(+)
|
|
|
|
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
|
|
--- a/chrome/android/java/res/values/ids.xml
|
|
+++ b/chrome/android/java/res/values/ids.xml
|
|
@@ -125,6 +125,7 @@ found in the LICENSE file.
|
|
<item type="id" name="ntp_feed_header_menu_item_toggle_switch" />
|
|
|
|
<!-- App Menu -->
|
|
+ <item type="id" name="exit_id" />
|
|
<item type="id" name="icon_row_menu_id" />
|
|
<item type="id" name="submenu_header_menu_id" />
|
|
<item type="id" name="forward_menu_id" />
|
|
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
|
|
@@ -363,6 +363,8 @@ import java.util.Set;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
import java.util.function.Supplier;
|
|
|
|
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
|
|
+
|
|
/**
|
|
* This is the main activity for ChromeMobile when not running in document mode. All the tabs are
|
|
* accessible via a chrome specific tab switching UI.
|
|
@@ -3901,6 +3903,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
|
.closeTabs(
|
|
TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true);
|
|
RecordUserAction.record("MobileTabClosed");
|
|
+ } else if (id == R.id.exit_id) {
|
|
+ ApplicationLifetime.terminate(false);
|
|
} else if (id == R.id.close_all_tabs_menu_id) {
|
|
boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion);
|
|
|
|
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
|
|
@@ -68,6 +68,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier;
|
|
import org.chromium.chrome.R;
|
|
import org.chromium.chrome.browser.ActivityTabProvider;
|
|
import org.chromium.chrome.browser.ActivityUtils;
|
|
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
|
|
import org.chromium.chrome.browser.ChromeActivitySessionTracker;
|
|
import org.chromium.chrome.browser.ChromeApplicationImpl;
|
|
import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
|
|
@@ -2633,6 +2634,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
|
return true;
|
|
}
|
|
|
|
+ if (id == R.id.exit_id) {
|
|
+ ApplicationLifetime.terminate(false);
|
|
+ return true;
|
|
+ }
|
|
+
|
|
if (id == R.id.update_menu_id) {
|
|
UpdateMenuItemHelper.getInstance(
|
|
getProfileProviderSupplier().get().getOriginalProfile())
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
|
|
@@ -20,6 +20,7 @@ import org.chromium.build.annotations.MonotonicNonNull;
|
|
import org.chromium.build.annotations.NullMarked;
|
|
import org.chromium.chrome.browser.BrowserRestartActivity;
|
|
import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
|
|
+import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
|
|
|
|
/**
|
|
* Answers requests to kill and (potentially) restart Chrome's main browser process.
|
|
@@ -76,6 +77,7 @@ class ChromeLifetimeController
|
|
|
|
@Override
|
|
public void onTerminate(boolean restart) {
|
|
+ IncognitoNotificationManager.dismissIncognitoNotification();
|
|
mRestartChromeOnDestroy = restart;
|
|
|
|
// Tell all Chrome Activities to finish themselves.
|
|
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
|
|
@@ -422,6 +422,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
|
|
maybeAddDividerLine(modelList, R.id.menu_item_content_filter_divider_line_id);
|
|
modelList.add(buildContentFilterHelpCenterMenuItem(currentTab));
|
|
}
|
|
+
|
|
+ modelList.add(new MVCListAdapter.ListItem(
|
|
+ AppMenuHandler.AppMenuItemType.STANDARD,
|
|
+ buildModelForStandardMenuItem(
|
|
+ R.id.exit_id,
|
|
+ R.string.menu_exit,
|
|
+ shouldShowIconBeforeItem() ? R.drawable.ic_exit_to_app_white_24dp : 0)));
|
|
}
|
|
|
|
private Runnable buildUpdateStateChangedObserver() {
|
|
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
|
|
@@ -4437,6 +4437,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
|
|
<message name="IDS_MENU_AUTO_DARK_WEB_CONTENTS" desc="Menu item in Chrome's overflow/options menu. When Chrome's browser UI is set to dark theme and this option is checked, sites will have a dark theme automatically applied as well. [CHAR_LIMIT=24]">
|
|
Dark theme
|
|
</message>
|
|
+ <message name="IDS_MENU_EXIT" desc="Menu item for exit browser. [CHAR-LIMIT=27]">
|
|
+ Exit
|
|
+ </message>
|
|
<message name="IDS_MENU_READER_MODE_PREFS" desc="Menu item to show reader mode preferences pane, which allows users to change the appearance (font size, theme, etc.) of the page. [CHAR_LIMIT=27]">
|
|
Appearance
|
|
</message>
|
|
--
|