Add-exit-menu-item.patch 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. chrome/android/java/res/menu/main_menu_regroup.xml | 3 +++
  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, 27 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. @@ -122,6 +122,9 @@
  17. android:icon="@drawable/vr_headset" />
  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. @@ -148,6 +151,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 in the tab switcher when start surface is enabled -->
  34. diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml
  35. --- a/chrome/android/java/res/menu/main_menu_regroup.xml
  36. +++ b/chrome/android/java/res/menu/main_menu_regroup.xml
  37. @@ -184,6 +184,9 @@
  38. android:icon="@drawable/vr_headset" />
  39. <item android:id="@+id/managed_by_menu_id"
  40. android:title="@string/managed" />
  41. + <item android:id="@+id/exit_id"
  42. + android:title="@string/menu_exit"
  43. + android:icon="@drawable/ic_exit_to_app_white_24dp" />
  44. </group>
  45. <!-- Items shown only in the tab switcher -->
  46. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  47. --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  48. +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
  49. @@ -189,6 +189,8 @@ import java.lang.annotation.RetentionPolicy;
  50. import java.util.List;
  51. import java.util.Locale;
  52. +import org.chromium.chrome.browser.ApplicationLifetime;
  53. +
  54. /**
  55. * This is the main activity for ChromeMobile when not running in document mode. All the tabs
  56. * are accessible via a chrome specific tab switching UI.
  57. @@ -1852,6 +1854,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
  58. } else if (id == R.id.close_tab) {
  59. getCurrentTabModel().closeTab(currentTab, true, false, true);
  60. RecordUserAction.record("MobileTabClosed");
  61. + } else if (id == R.id.exit_id) {
  62. + ApplicationLifetime.terminate(false);
  63. } else if (id == R.id.close_all_tabs_menu_id) {
  64. // Close both incognito and normal tabs
  65. getTabModelSelector().closeAllTabs();
  66. 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
  67. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  68. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  69. @@ -57,6 +57,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier;
  70. import org.chromium.chrome.R;
  71. import org.chromium.chrome.browser.ActivityTabProvider;
  72. import org.chromium.chrome.browser.AppHooks;
  73. +import org.chromium.chrome.browser.ApplicationLifetime;
  74. import org.chromium.chrome.browser.ChromeActivitySessionTracker;
  75. import org.chromium.chrome.browser.ChromeApplication;
  76. import org.chromium.chrome.browser.ChromeWindow;
  77. @@ -2129,6 +2130,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  78. return true;
  79. }
  80. + if (id == R.id.exit_id) {
  81. + ApplicationLifetime.terminate(false);
  82. + return true;
  83. + }
  84. +
  85. if (id == R.id.update_menu_id) {
  86. UpdateMenuItemHelper.getInstance().onMenuItemClicked(this);
  87. return true;
  88. 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
  89. --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
  90. +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
  91. @@ -82,7 +82,11 @@ class ChromeLifetimeController implements ApplicationLifetime.Observer,
  92. // Kick off a timer to kill the process after a delay, which fires only if the Activities
  93. // take too long to be finished.
  94. - mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
  95. + if (restart) {
  96. + mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
  97. + } else {
  98. + fireBrowserRestartActivityIntent();
  99. + }
  100. }
  101. @Override
  102. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  103. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  104. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  105. @@ -2954,6 +2954,9 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
  106. <message name="IDS_MENU_SETTINGS" desc="Menu item for opening browser settings. [CHAR-LIMIT=27]">
  107. Settings
  108. </message>
  109. + <message name="IDS_MENU_EXIT" desc="Menu item for exit browser. [CHAR-LIMIT=27]">
  110. + Exit
  111. + </message>
  112. <message name="IDS_MENU_CLOSE_ALL_TABS" desc="Menu item for closing all open tabs. [CHAR-LIMIT=27]">
  113. Close all tabs
  114. </message>
  115. --
  116. 2.17.1