Bug 1414084 - Part 10 - Init MenuItemInfo list right from the start. r?grisha
The small savings in initialising this on demand the first time a menu item is
added, are not worth the additional complexity in null checks and the like.
MozReview-Commit-ID: Lcz09Ds8NxJ
--- a/mobile/android/base/java/org/mozilla/gecko/AddonUICache.java
+++ b/mobile/android/base/java/org/mozilla/gecko/AddonUICache.java
@@ -50,17 +50,17 @@ public class AddonUICache implements Bun
public boolean checked;
public boolean enabled = true;
public boolean visible = true;
public int parent;
}
private static final AddonUICache instance = new AddonUICache();
- private List<MenuItemInfo> mAddonMenuItemsCache;
+ private final List<MenuItemInfo> mAddonMenuItemsCache = new ArrayList<>();
private int mAddonMenuNextID = ADDON_MENU_OFFSET;
private Menu mMenu;
private boolean mInitialized;
public static AddonUICache getInstance() {
return instance;
}
@@ -125,17 +125,17 @@ public class AddonUICache implements Bun
/**
* Starts handling add-on menu items for the given {@link Menu} and also adds any
* menu items that have already been cached.
*/
public void onCreateOptionsMenu(Menu menu) {
mMenu = menu;
// Add add-on menu items, if any exist.
- if (mMenu != null && mAddonMenuItemsCache != null && !mAddonMenuItemsCache.isEmpty()) {
+ if (mMenu != null) {
for (MenuItemInfo item : mAddonMenuItemsCache) {
addAddonMenuItemToMenu(mMenu, item);
}
}
}
/**
* Clears the reference to the Menu passed in {@link AddonUICache#onCreateOptionsMenu}.
@@ -145,43 +145,37 @@ public class AddonUICache implements Bun
public void onDestroyOptionsMenu() {
mMenu = null;
}
/**
* Adds an addon menu item/webextension browser action to the menu.
*/
private void addAddonMenuItem(final MenuItemInfo info) {
- if (mAddonMenuItemsCache == null) {
- mAddonMenuItemsCache = new ArrayList<>();
- }
-
mAddonMenuItemsCache.add(info);
if (mMenu == null) {
return;
}
addAddonMenuItemToMenu(mMenu, info);
}
/**
* Removes an addon menu item/webextension browser action from the menu by its UUID.
*/
private void removeAddonMenuItem(String uuid) {
int id = -1;
// Remove add-on menu item from cache, if available.
- if (mAddonMenuItemsCache != null && !mAddonMenuItemsCache.isEmpty()) {
- for (MenuItemInfo item : mAddonMenuItemsCache) {
- if (item.uuid.equals(uuid)) {
- id = item.id;
- mAddonMenuItemsCache.remove(item);
- break;
- }
+ for (MenuItemInfo item : mAddonMenuItemsCache) {
+ if (item.uuid.equals(uuid)) {
+ id = item.id;
+ mAddonMenuItemsCache.remove(item);
+ break;
}
}
if (mMenu == null || id == -1) {
return;
}
final MenuItem menuItem = mMenu.findItem(id);
@@ -192,27 +186,25 @@ public class AddonUICache implements Bun
/**
* Updates the addon menu/webextension browser action with the specified UUID.
*/
private void updateAddonMenuItem(String uuid, final GeckoBundle options) {
int id = -1;
// Set attribute for the menu item in cache, if available
- if (mAddonMenuItemsCache != null && !mAddonMenuItemsCache.isEmpty()) {
- for (MenuItemInfo item : mAddonMenuItemsCache) {
- if (item.uuid.equals(uuid)) {
- id = item.id;
- item.label = options.getString("name", item.label);
- item.checkable = options.getBoolean("checkable", item.checkable);
- item.checked = options.getBoolean("checked", item.checked);
- item.enabled = options.getBoolean("enabled", item.enabled);
- item.visible = options.getBoolean("visible", item.visible);
- break;
- }
+ for (MenuItemInfo item : mAddonMenuItemsCache) {
+ if (item.uuid.equals(uuid)) {
+ id = item.id;
+ item.label = options.getString("name", item.label);
+ item.checkable = options.getBoolean("checkable", item.checkable);
+ item.checked = options.getBoolean("checked", item.checked);
+ item.enabled = options.getBoolean("enabled", item.enabled);
+ item.visible = options.getBoolean("visible", item.visible);
+ break;
}
}
if (mMenu == null || id == -1) {
return;
}
final MenuItem menuItem = mMenu.findItem(id);