Add-exit-menu-item.patch 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. From: Serg <serg.zhukovsky@gmail.com>
  2. Date: Tue, 31 Jan 2017 22:12:27 -0500
  3. Subject: Add exit menu item
  4. Corrected Exit functionality
  5. ---
  6. chrome/android/java/res/menu/main_menu.xml | 6 ++++++
  7. .../org/chromium/chrome/browser/ApplicationLifetime.java | 2 ++
  8. .../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 ++++
  9. .../src/org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
  10. .../chrome/browser/init/ChromeLifetimeController.java | 6 +++++-
  11. .../browser/ui/android/strings/android_chrome_strings.grd | 3 +++
  12. 6 files changed, 26 insertions(+), 1 deletion(-)
  13. diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
  14. --- a/chrome/android/java/res/menu/main_menu.xml
  15. +++ b/chrome/android/java/res/menu/main_menu.xml
  16. @@ -153,6 +153,9 @@
  17. android:icon="@drawable/gm_filled_cardboard_24" />
  18. <item android:id="@+id/managed_by_menu_id"
  19. android:title="@string/managed" />
  20. + <item android:id="@+id/exit_id"
  21. + android:title="@string/menu_exit"
  22. + android:icon="@drawable/ic_exit_to_app_white_24dp" />
  23. </group>
  24. <!-- Items shown only in the tab switcher -->
  25. @@ -179,6 +182,9 @@
  26. <item android:id="@id/preferences_id"
  27. android:title="@string/menu_settings"
  28. android:icon="@drawable/settings_cog" />
  29. + <item android:id="@+id/exit_id"
  30. + android:title="@string/menu_exit"
  31. + android:icon="@drawable/ic_exit_to_app_white_24dp" />
  32. </group>
  33. <!-- Items shown only when the tablet has no visible tabs -->
  34. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java b/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java
  35. --- a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java
  36. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java
  37. @@ -6,6 +6,7 @@ package org.chromium.chrome.browser;
  38. import org.chromium.base.ObserverList;
  39. import org.chromium.base.annotations.CalledByNative;
  40. +import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
  41. /**
  42. * Watches for when Chrome is told to restart itself.
  43. @@ -42,6 +43,7 @@ public class ApplicationLifetime {
  44. @CalledByNative
  45. public static void terminate(boolean restart) {
  46. + IncognitoNotificationManager.dismissIncognitoNotification();
  47. for (Observer observer : sObservers) {
  48. observer.onTerminate(restart);
  49. }
  50. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  51. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  52. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  53. @@ -207,6 +207,8 @@ import java.util.HashSet;
  54. import java.util.List;
  55. import java.util.Locale;
  56. +import org.chromium.chrome.browser.ApplicationLifetime;
  57. +
  58. /**
  59. * This is the main activity for ChromeMobile when not running in document mode. All the tabs
  60. * are accessible via a chrome specific tab switching UI.
  61. @@ -2042,6 +2044,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
  62. } else if (id == R.id.close_tab) {
  63. getCurrentTabModel().closeTab(currentTab, true, false, true);
  64. RecordUserAction.record("MobileTabClosed");
  65. + } else if (id == R.id.exit_id) {
  66. + ApplicationLifetime.terminate(false);
  67. } else if (id == R.id.close_all_tabs_menu_id) {
  68. // Close both incognito and normal tabs
  69. getTabModelSelector().closeAllTabs();
  70. 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
  71. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  72. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  73. @@ -65,6 +65,7 @@ import org.chromium.chrome.R;
  74. import org.chromium.chrome.browser.ActivityTabProvider;
  75. import org.chromium.chrome.browser.ActivityUtils;
  76. import org.chromium.chrome.browser.AppHooks;
  77. +import org.chromium.chrome.browser.ApplicationLifetime;
  78. import org.chromium.chrome.browser.ChromeActivitySessionTracker;
  79. import org.chromium.chrome.browser.ChromeApplicationImpl;
  80. import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
  81. @@ -2388,6 +2389,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  82. return true;
  83. }
  84. + if (id == R.id.exit_id) {
  85. + ApplicationLifetime.terminate(false);
  86. + return true;
  87. + }
  88. +
  89. if (id == R.id.update_menu_id) {
  90. UpdateMenuItemHelper.getInstance().onMenuItemClicked(this);
  91. return true;
  92. 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
  93. --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
  94. +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
  95. @@ -82,7 +82,11 @@ class ChromeLifetimeController implements ApplicationLifetime.Observer,
  96. // Kick off a timer to kill the process after a delay, which fires only if the Activities
  97. // take too long to be finished.
  98. - mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
  99. + if (restart) {
  100. + mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
  101. + } else {
  102. + fireBrowserRestartActivityIntent();
  103. + }
  104. }
  105. @Override
  106. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  107. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  108. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  109. @@ -3338,6 +3338,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
  110. <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]">
  111. Dark theme
  112. </message>
  113. + <message name="IDS_MENU_EXIT" desc="Menu item for exit browser. [CHAR-LIMIT=27]">
  114. + Exit
  115. + </message>
  116. <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]">
  117. Appearance
  118. </message>
  119. --
  120. 2.25.1