Bug 1366681 - Try to move Add-On to the first level menu
To follow designer's requirement, move this menu item to top level.
However, we don't do this directly. Instead, use SwitchBoard to control
visibility.
MozReview-Commit-ID: 9XigQyjF6A1
--- a/mobile/android/app/src/main/res/menu-large/browser_app_menu.xml
+++ b/mobile/android/app/src/main/res/menu-large/browser_app_menu.xml
@@ -48,16 +48,20 @@
<item android:id="@+id/find_in_page"
android:title="@string/find_in_page" />
<item android:id="@+id/desktop_mode"
android:title="@string/desktop_mode"
android:checkable="true" />
+ <item android:id="@+id/addons_top_level"
+ android:title="@string/addons"
+ android:visible="false" />
+
<item android:id="@+id/page"
android:title="@string/page">
<menu>
<item android:id="@+id/subscribe"
android:title="@string/contextmenu_subscribe"/>
--- a/mobile/android/app/src/main/res/menu-xlarge/browser_app_menu.xml
+++ b/mobile/android/app/src/main/res/menu-xlarge/browser_app_menu.xml
@@ -44,16 +44,20 @@
android:title="@string/bookmarks_title"/>
<item android:id="@+id/history_list"
android:title="@string/history_title"/>
<item android:id="@+id/find_in_page"
android:title="@string/find_in_page" />
+ <item android:id="@+id/addons_top_level"
+ android:title="@string/addons"
+ android:visible="false" />
+
<item android:id="@+id/desktop_mode"
android:title="@string/desktop_mode"
android:checkable="true" />
<item android:id="@+id/page"
android:title="@string/page">
--- a/mobile/android/app/src/main/res/menu/browser_app_menu.xml
+++ b/mobile/android/app/src/main/res/menu/browser_app_menu.xml
@@ -48,16 +48,20 @@
<item android:id="@+id/find_in_page"
android:title="@string/find_in_page" />
<item android:id="@+id/desktop_mode"
android:title="@string/desktop_mode"
android:checkable="true" />
+ <item android:id="@+id/addons_top_level"
+ android:title="@string/addons"
+ android:visible="false" />
+
<item android:id="@+id/page"
android:title="@string/page">
<menu>
<item android:id="@+id/subscribe"
android:title="@string/contextmenu_subscribe"/>
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -3702,18 +3702,27 @@ public class BrowserApp extends GeckoApp
} else {
enterGuestMode.setVisible(true);
}
if (!Restrictions.isAllowed(this, Restrictable.GUEST_BROWSING)) {
MenuUtils.safeSetVisible(aMenu, R.id.new_guest_session, false);
}
+ if (SwitchBoard.isInExperiment(this, Experiments.TOP_ADDONS_MENU)) {
+ MenuUtils.safeSetVisible(aMenu, R.id.addons_top_level, true);
+ MenuUtils.safeSetVisible(aMenu, R.id.addons, false);
+ } else {
+ MenuUtils.safeSetVisible(aMenu, R.id.addons_top_level, false);
+ MenuUtils.safeSetVisible(aMenu, R.id.addons, true);
+ }
+
if (!Restrictions.isAllowed(this, Restrictable.INSTALL_EXTENSION)) {
MenuUtils.safeSetVisible(aMenu, R.id.addons, false);
+ MenuUtils.safeSetVisible(aMenu, R.id.addons_top_level, false);
}
// Hide panel menu items if the panels themselves are hidden.
// If we don't know whether the panels are hidden, just show the menu items.
bookmarksList.setVisible(prefs.getBoolean(HomeConfig.PREF_KEY_BOOKMARKS_PANEL_ENABLED, true));
historyList.setVisible(prefs.getBoolean(HomeConfig.PREF_KEY_HISTORY_PANEL_ENABLED, true));
return true;
@@ -3849,17 +3858,17 @@ public class BrowserApp extends GeckoApp
final String OS = AppConstants.OS_TARGET;
final String LOCALE = Locales.getLanguageTag(Locale.getDefault());
final String URL = getResources().getString(R.string.help_link, VERSION, OS, LOCALE);
Tabs.getInstance().loadUrlInTab(URL);
return true;
}
- if (itemId == R.id.addons) {
+ if (itemId == R.id.addons || itemId == R.id.addons_top_level) {
Tabs.getInstance().loadUrlInTab(AboutPages.ADDONS);
return true;
}
if (itemId == R.id.logins) {
Tabs.getInstance().loadUrlInTab(AboutPages.LOGINS);
return true;
}
--- a/mobile/android/base/java/org/mozilla/gecko/Experiments.java
+++ b/mobile/android/base/java/org/mozilla/gecko/Experiments.java
@@ -60,16 +60,19 @@ public class Experiments {
public static final String ACTIVITY_STREAM = "activity-stream";
// Show a setting in "experimental features" for enabling/disabling activity stream.
public static final String ACTIVITY_STREAM_SETTING = "activity-stream-setting";
// Enable Activity stream by default for users in the "opt out" group.
public static final String ACTIVITY_STREAM_OPT_OUT = "activity-stream-opt-out";
+ // Show AddOns menu-item in top level menu
+ public static final String TOP_ADDONS_MENU = "top-addons-menu";
+
// Tabs tray: Arrange tabs in two columns in portrait mode
public static final String COMPACT_TABS = "compact-tabs";
// Enable full bookmark management(full-page dialog, bookmark/folder modification, etc.)
public static final String FULL_BOOKMARK_MANAGEMENT = "full-bookmark-management";
// Enable Leanplum SDK
public static final String LEANPLUM = "leanplum-start";