From: Serg 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 @@ -126,6 +126,7 @@ found in the LICENSE file. + 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 @@ -401,6 +401,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. @@ -4160,6 +4162,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 @@ -69,6 +69,7 @@ import org.chromium.base.supplier.SettableNullableObservableSupplier; 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; @@ -2718,6 +2719,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 @@ -492,6 +492,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm 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))); + // Default browser promo menu item (entry point). if (shouldShowDefaultBrowserPromo()) { maybeAddDividerLine(modelList, R.id.divider_line_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 @@ -4572,6 +4572,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d More tools + + Exit + Appearance --