зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1255077
- Bookmarks menu item does nothing if bookmarks panel is disabled. r=margaret
MozReview-Commit-ID: 7219EueXxtw --HG-- extra : rebase_source : b0d6bd376462f7f20cb2ad75e7b729a49d1831ad
This commit is contained in:
Родитель
cd7094d843
Коммит
13a58e237c
|
@ -18,7 +18,6 @@ import org.mozilla.gecko.animation.PropertyAnimator;
|
|||
import org.mozilla.gecko.animation.TransitionsTracker;
|
||||
import org.mozilla.gecko.animation.ViewHelper;
|
||||
import org.mozilla.gecko.db.BrowserContract;
|
||||
import org.mozilla.gecko.db.BrowserContract.Combined;
|
||||
import org.mozilla.gecko.db.BrowserDB;
|
||||
import org.mozilla.gecko.db.SuggestedSites;
|
||||
import org.mozilla.gecko.distribution.Distribution;
|
||||
|
@ -33,6 +32,7 @@ import org.mozilla.gecko.gfx.ImmutableViewportMetrics;
|
|||
import org.mozilla.gecko.gfx.LayerView;
|
||||
import org.mozilla.gecko.home.BrowserSearch;
|
||||
import org.mozilla.gecko.home.HomeBanner;
|
||||
import org.mozilla.gecko.home.HomeConfig;
|
||||
import org.mozilla.gecko.home.HomeConfig.PanelType;
|
||||
import org.mozilla.gecko.home.HomeConfigPrefsBackend;
|
||||
import org.mozilla.gecko.home.HomePager;
|
||||
|
@ -85,7 +85,6 @@ import org.mozilla.gecko.util.NativeJSObject;
|
|||
import org.mozilla.gecko.util.PrefUtils;
|
||||
import org.mozilla.gecko.util.StringUtils;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
import org.mozilla.gecko.util.UIAsyncTask;
|
||||
import org.mozilla.gecko.widget.AnchoredPopup;
|
||||
|
||||
import org.mozilla.gecko.widget.GeckoActionProvider;
|
||||
|
@ -103,7 +102,6 @@ import android.content.SharedPreferences;
|
|||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
|
@ -3349,6 +3347,12 @@ public class BrowserApp extends GeckoApp
|
|||
if (!SwitchBoard.isInExperiment(this, Experiments.BOOKMARKS_HISTORY_MENU)) {
|
||||
bookmarksList.setVisible(false);
|
||||
historyList.setVisible(false);
|
||||
} else {
|
||||
// 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.
|
||||
final SharedPreferences prefs = GeckoSharedPrefs.forProfile(getContext());
|
||||
bookmarksList.setVisible(prefs.getBoolean(HomeConfig.PREF_KEY_BOOKMARKS_PANEL_ENABLED, true));
|
||||
historyList.setVisible(prefs.getBoolean(HomeConfig.PREF_KEY_HISTORY_PANEL_ENABLED, true));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -27,9 +27,11 @@ import android.content.Context;
|
|||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
public final class HomeConfig {
|
||||
public static final String PREF_KEY_BOOKMARKS_PANEL_ENABLED = "bookmarksPanelEnabled";
|
||||
public static final String PREF_KEY_HISTORY_PANEL_ENABLED = "historyPanelEnabled";
|
||||
|
||||
/**
|
||||
* Used to determine what type of HomeFragment subclass to use when creating
|
||||
* a given panel. With the exception of DYNAMIC, all of these types correspond
|
||||
|
|
|
@ -5,14 +5,11 @@
|
|||
|
||||
package org.mozilla.gecko.home;
|
||||
|
||||
import org.mozilla.gecko.home.HomeConfig.PanelConfig;
|
||||
import org.mozilla.gecko.home.HomeConfig.OnReloadListener;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HomeConfigLoader extends AsyncTaskLoader<HomeConfig.State> {
|
||||
private final HomeConfig mConfig;
|
||||
private HomeConfig.State mConfigState;
|
||||
|
|
|
@ -264,6 +264,7 @@ public class HomeConfigPrefsBackend implements HomeConfigBackend {
|
|||
final JSONArray jsonPanelConfigs;
|
||||
try {
|
||||
jsonPanelConfigs = maybePerformMigration(mContext, jsonString);
|
||||
updatePrefsFromConfig(jsonPanelConfigs);
|
||||
} catch (JSONException e) {
|
||||
Log.e(LOGTAG, "Error loading the list of home panels from JSON prefs", e);
|
||||
|
||||
|
@ -382,6 +383,40 @@ public class HomeConfigPrefsBackend implements HomeConfigBackend {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update prefs that depend on home panels state.
|
||||
*
|
||||
* This includes the prefs that keep track of whether bookmarks or history are enabled, which are
|
||||
* used to control the visibility of the corresponding menu items.
|
||||
*/
|
||||
private void updatePrefsFromConfig(JSONArray panelsArray) {
|
||||
final SharedPreferences prefs = GeckoSharedPrefs.forProfile(mContext);
|
||||
if (!prefs.contains(HomeConfig.PREF_KEY_BOOKMARKS_PANEL_ENABLED)
|
||||
|| !prefs.contains(HomeConfig.PREF_KEY_HISTORY_PANEL_ENABLED)) {
|
||||
|
||||
final String bookmarkType = PanelType.BOOKMARKS.toString();
|
||||
final String historyType = PanelType.HISTORY.toString();
|
||||
try {
|
||||
for (int i = 0; i < panelsArray.length(); i++) {
|
||||
final JSONObject panelObj = panelsArray.getJSONObject(i);
|
||||
final String panelType = panelObj.optString(PanelConfig.JSON_KEY_TYPE, null);
|
||||
if (panelType == null) {
|
||||
break;
|
||||
}
|
||||
final boolean isDisabled = panelObj.optBoolean(PanelConfig.JSON_KEY_DISABLED, false);
|
||||
if (bookmarkType.equals(panelType)) {
|
||||
prefs.edit().putBoolean(HomeConfig.PREF_KEY_BOOKMARKS_PANEL_ENABLED, !isDisabled).apply();
|
||||
} else if (historyType.equals(panelType)) {
|
||||
prefs.edit().putBoolean(HomeConfig.PREF_KEY_HISTORY_PANEL_ENABLED, !isDisabled).apply();
|
||||
}
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
Log.e(LOGTAG, "Error fetching panel from config to update prefs");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void sendReloadBroadcast() {
|
||||
final LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(mContext);
|
||||
final Intent reloadIntent = new Intent(RELOAD_BROADCAST);
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
package org.mozilla.gecko.preferences;
|
||||
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
import org.mozilla.gecko.Telemetry;
|
||||
import org.mozilla.gecko.TelemetryContract;
|
||||
import org.mozilla.gecko.TelemetryContract.Method;
|
||||
|
@ -231,6 +232,14 @@ public class PanelsPreferenceCategory extends CustomListCategory {
|
|||
Telemetry.sendUIEvent(TelemetryContract.Event.PANEL_SHOW, Method.DIALOG, id);
|
||||
}
|
||||
|
||||
if (HomeConfig.getIdForBuiltinPanelType(HomeConfig.PanelType.BOOKMARKS).equals(id)) {
|
||||
GeckoSharedPrefs.forProfile(getContext()).edit().putBoolean(HomeConfig.PREF_KEY_BOOKMARKS_PANEL_ENABLED, !toHide).apply();
|
||||
}
|
||||
|
||||
if (HomeConfig.getIdForBuiltinPanelType(HomeConfig.PanelType.HISTORY).equals(id)) {
|
||||
GeckoSharedPrefs.forProfile(getContext()).edit().putBoolean(HomeConfig.PREF_KEY_HISTORY_PANEL_ENABLED, !toHide).apply();
|
||||
}
|
||||
|
||||
pref.setHidden(toHide);
|
||||
setDefaultFromConfig();
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче