Bug 1315937 - Only create option menu items once. draft
authorJulian_Chu <walkingice0204@gmail.com>
Thu, 23 Feb 2017 18:42:18 +0800
changeset 491797 f27d1e685d54f9c882fba3891985b251a975ab3e
parent 491665 e91de6fb2b3dce9c932428265b0fdb630ea470d7
child 491798 965756b1bbb03414b69a04b4beb1179884b34411
child 494469 316c27bc21488c727ac3e429b6bcc2cb390442cd
push id47421
push userbmo:walkingice0204@gmail.com
push dateThu, 02 Mar 2017 08:30:50 +0000
bugs1315937
milestone54.0a1
Bug 1315937 - Only create option menu items once. Menu items in CustomTabsActivity are static. Not necessary to create items several times. However `onPrepareOptionsMenu()` will be called before menu is shown. Cannot use `onCreateOptionsMenu()` due to GeckoApp overwrited `onCreatePanelMenu()` and pass different instance to sub-class. Since CustomTabsActivity does not use custom menu, just overwrite `onCreatePanelMenu()` should be safe. MozReview-Commit-ID: 2oTN85GurqS
mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
--- a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java
@@ -201,20 +201,24 @@ public class CustomTabsActivity extends 
             final Tab tab = tabs.getTab(lastSelectedTabId);
             if (tab == null) {
                 finish();
             }
         }
         super.onResume();
     }
 
+    // Usually should use onCreateOptionsMenu() to initialize menu items. But GeckoApp overwrite
+    // it to support custom menu(Bug 739412). Then the parameter *menu* in this.onCreateOptionsMenu()
+    // and this.onPrepareOptionsMenu() are different instances - GeckoApp.onCreatePanelMenu() changed it.
+    // CustomTabsActivity only use standard menu in ActionBar, so initialize menu here.
     @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
+    public boolean onCreatePanelMenu(final int id, final Menu menu) {
         insertActionButton(menu, getIntent());
-        return super.onPrepareOptionsMenu(menu);
+        return true;
     }
 
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case android.R.id.home:
                 finish();
                 return true;
             case R.id.action_button: