Add-exit-menu-item.patch 5.7 KB

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