mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 09:05:45 +00:00
d7f1de6d04
This patch transforms RestrictedProfiles to delegate isAllowed() and canLoadUrl() calls to an object implementing the RestrictionConfiguration interface. DefaultConfiguration, GuestProfileConfiguration and RestrictedProfileConfiguration are implementing RestrictionConfiguration and will take care of handling the restrictions for the different types of profiles. --HG-- extra : commitid : LQ2YsdyG6oR extra : rebase_source : 015f7f02c6e7fded16d3811a71f0ae23547e5f71
113 lines
4.0 KiB
Java
113 lines
4.0 KiB
Java
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.gecko.preferences;
|
|
|
|
import org.mozilla.gecko.AppConstants.Versions;
|
|
import org.mozilla.gecko.R;
|
|
import org.mozilla.gecko.util.ThreadUtils;
|
|
import org.mozilla.gecko.RestrictedProfiles;
|
|
import org.mozilla.gecko.restrictions.Restriction;
|
|
|
|
import java.util.Set;
|
|
|
|
import android.app.ProgressDialog;
|
|
import android.content.Context;
|
|
import android.preference.Preference;
|
|
import android.util.AttributeSet;
|
|
import android.util.Log;
|
|
|
|
class AndroidImportPreference extends MultiPrefMultiChoicePreference {
|
|
private static final String LOGTAG = "AndroidImport";
|
|
public static final String PREF_KEY = "android.not_a_preference.import_android";
|
|
private static final String PREF_KEY_PREFIX = "import_android.data.";
|
|
private final Context mContext;
|
|
|
|
public static class Handler implements GeckoPreferences.PrefHandler {
|
|
public boolean setupPref(Context context, Preference pref) {
|
|
// Feature disabled on devices running Android M+ (Bug 1183559)
|
|
return Versions.preM && RestrictedProfiles.isAllowed(context, Restriction.DISALLOW_IMPORT_SETTINGS);
|
|
}
|
|
|
|
public void onChange(Context context, Preference pref, Object newValue) { }
|
|
}
|
|
|
|
public AndroidImportPreference(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
mContext = context;
|
|
}
|
|
|
|
@Override
|
|
protected void onDialogClosed(boolean positiveResult) {
|
|
super.onDialogClosed(positiveResult);
|
|
|
|
if (!positiveResult)
|
|
return;
|
|
|
|
boolean bookmarksChecked = false;
|
|
boolean historyChecked = false;
|
|
|
|
Set<String> values = getValues();
|
|
|
|
for (String value : values) {
|
|
// Import checkbox values are stored in Android prefs to
|
|
// remember their check states. The key names are import_android.data.X
|
|
String key = value.substring(PREF_KEY_PREFIX.length());
|
|
if ("bookmarks".equals(key)) {
|
|
bookmarksChecked = true;
|
|
} else if ("history".equals(key)) {
|
|
historyChecked = true;
|
|
}
|
|
}
|
|
|
|
runImport(bookmarksChecked, historyChecked);
|
|
}
|
|
|
|
protected void runImport(final boolean doBookmarks, final boolean doHistory) {
|
|
Log.i(LOGTAG, "Importing Android history/bookmarks");
|
|
if (!doBookmarks && !doHistory) {
|
|
return;
|
|
}
|
|
|
|
final String dialogTitle;
|
|
if (doBookmarks && doHistory) {
|
|
dialogTitle = mContext.getString(R.string.bookmarkhistory_import_both);
|
|
} else if (doBookmarks) {
|
|
dialogTitle = mContext.getString(R.string.bookmarkhistory_import_bookmarks);
|
|
} else {
|
|
dialogTitle = mContext.getString(R.string.bookmarkhistory_import_history);
|
|
}
|
|
|
|
final ProgressDialog dialog =
|
|
ProgressDialog.show(mContext,
|
|
dialogTitle,
|
|
mContext.getString(R.string.bookmarkhistory_import_wait),
|
|
true);
|
|
|
|
final Runnable stopCallback = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
ThreadUtils.postToUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
dialog.dismiss();
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
ThreadUtils.postToBackgroundThread(
|
|
// Constructing AndroidImport may need finding the profile,
|
|
// which hits disk, so it needs to go into a Runnable too.
|
|
new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
new AndroidImport(mContext, stopCallback, doBookmarks, doHistory).run();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|