Merge "Import translations. DO NOT MERGE" into nyc-dev
diff --git a/res/layout/preference_importance_slider.xml b/res/layout/preference_importance_slider.xml
index dc7c9db..ddbcd30 100644
--- a/res/layout/preference_importance_slider.xml
+++ b/res/layout/preference_importance_slider.xml
@@ -58,8 +58,8 @@
android:focusable="true"
android:background="#00ffffff"
android:progressBackgroundTint="@color/importance_secondary_slider_color"
- android:thumbTint="@color/importance_disabled_slider_color"
- android:progressTint="@color/importance_disabled_slider_color"
+ android:thumbTint="@color/importance_slider_color"
+ android:progressTint="@color/importance_slider_color"
style="@android:style/Widget.Material.SeekBar.Discrete"
android:tickMarkTint="@android:color/black" />
diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
index c56a956..d488d7a 100644
--- a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
+++ b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
@@ -18,19 +18,20 @@
import android.app.Fragment;
import android.app.KeyguardManager;
-import android.content.Intent;
import android.os.Bundle;
-import android.os.Handler;
import android.os.UserManager;
import android.view.MenuItem;
import android.view.WindowManager;
public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity {
+ private static final String STATE_IS_KEYGUARD_LOCKED = "STATE_IS_KEYGUARD_LOCKED";
+
private boolean mRestoring;
private boolean mDark;
private boolean mEnterAnimationPending;
private boolean mFirstTimeVisible = true;
+ private boolean mIsKeyguardLocked = false;
@Override
protected void onCreate(Bundle savedState) {
@@ -44,8 +45,15 @@
mDark = true;
}
super.onCreate(savedState);
- boolean deviceLocked = getSystemService(KeyguardManager.class).isKeyguardLocked();
- if (deviceLocked && getIntent().getBooleanExtra(
+ mIsKeyguardLocked = savedState == null
+ ? getSystemService(KeyguardManager.class).isKeyguardLocked()
+ : savedState.getBoolean(STATE_IS_KEYGUARD_LOCKED, false);
+ // If the activity is launched, not due to config change, when keyguard is locked and the
+ // flag is set, assume it's launched on top of keyguard on purpose.
+ // TODO: Don't abuse SHOW_WHEN_LOCKED and don't check isKeyguardLocked.
+ // Set extra SHOW_WHEN_LOCKED and WindowManager FLAG_SHOW_WHEN_LOCKED only if it's
+ // truly on top of keyguard on purpose
+ if (mIsKeyguardLocked && getIntent().getBooleanExtra(
ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}
@@ -60,6 +68,12 @@
}
@Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(STATE_IS_KEYGUARD_LOCKED, mIsKeyguardLocked);
+ }
+
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java
index 6cdf0b9..eed380b 100644
--- a/src/com/android/settings/CredentialStorage.java
+++ b/src/com/android/settings/CredentialStorage.java
@@ -103,16 +103,11 @@
static final int MIN_PASSWORD_QUALITY = DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
private static final int CONFIRM_KEY_GUARD_REQUEST = 1;
+ private static final int CONFIRM_CLEAR_SYSTEM_CREDENTIAL_REQUEST = 2;
private final KeyStore mKeyStore = KeyStore.getInstance();
/**
- * The UIDs that are used for system credential storage in keystore.
- */
- private static final int[] SYSTEM_CREDENTIAL_UIDS = {Process.WIFI_UID, Process.VPN_UID,
- Process.ROOT_UID, Process.SYSTEM_UID};
-
- /**
* When non-null, the bundle containing credentials to install.
*/
private Bundle mInstallBundle;
@@ -197,7 +192,7 @@
return;
}
// force key guard confirmation
- if (confirmKeyGuard()) {
+ if (confirmKeyGuard(CONFIRM_KEY_GUARD_REQUEST)) {
// will return password value via onActivityResult
return;
}
@@ -328,8 +323,10 @@
@Override public void onDismiss(DialogInterface dialog) {
if (mResetConfirmed) {
mResetConfirmed = false;
- new ResetKeyStoreAndKeyChain().execute();
- return;
+ if (confirmKeyGuard(CONFIRM_CLEAR_SYSTEM_CREDENTIAL_REQUEST)) {
+ // will return password value via onActivityResult
+ return;
+ }
}
finish();
}
@@ -343,12 +340,7 @@
@Override protected Boolean doInBackground(Void... unused) {
// Clear all the users credentials could have been installed in for this user.
- final UserManager um = (UserManager) getSystemService(USER_SERVICE);
- for (int userId : um.getProfileIdsWithDisabled(UserHandle.myUserId())) {
- for (int uid : SYSTEM_CREDENTIAL_UIDS) {
- mKeyStore.clearUid(UserHandle.getUid(userId, uid));
- }
- }
+ new LockPatternUtils(CredentialStorage.this).resetKeyStore(UserHandle.myUserId());
try {
KeyChainConnection keyChainConnection = KeyChain.bind(CredentialStorage.this);
@@ -454,10 +446,10 @@
/**
* Confirm existing key guard, returning password via onActivityResult.
*/
- private boolean confirmKeyGuard() {
+ private boolean confirmKeyGuard(int requestCode) {
Resources res = getResources();
boolean launched = new ChooseLockSettingsHelper(this)
- .launchConfirmationActivity(CONFIRM_KEY_GUARD_REQUEST,
+ .launchConfirmationActivity(requestCode,
res.getText(R.string.credentials_title), true);
return launched;
}
@@ -481,6 +473,13 @@
}
// failed confirmation, bail
finish();
+ } else if (requestCode == CONFIRM_CLEAR_SYSTEM_CREDENTIAL_REQUEST) {
+ if (resultCode == Activity.RESULT_OK) {
+ new ResetKeyStoreAndKeyChain().execute();
+ return;
+ }
+ // failed confirmation, bail
+ finish();
}
}
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index 18b941c..e08173f 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -87,7 +87,7 @@
mSummaryLoader = new SummaryLoader(getActivity(), categories);
setHasOptionsMenu(true);
Context context = getContext();
- mConditionManager = ConditionManager.get(context);
+ mConditionManager = ConditionManager.get(context, false);
mSuggestionParser = new SuggestionParser(context,
context.getSharedPreferences(SUGGESTIONS, 0), R.xml.suggestion_ordering);
mSuggestionsChecks = new SuggestionsChecks(getContext());
diff --git a/src/com/android/settings/dashboard/conditional/ConditionManager.java b/src/com/android/settings/dashboard/conditional/ConditionManager.java
index f38bb2a..ad0e839 100644
--- a/src/com/android/settings/dashboard/conditional/ConditionManager.java
+++ b/src/com/android/settings/dashboard/conditional/ConditionManager.java
@@ -54,10 +54,15 @@
private final ArrayList<ConditionListener> mListeners = new ArrayList<>();
- private ConditionManager(Context context) {
+ private ConditionManager(Context context, boolean loadConditionsNow) {
mContext = context;
mConditions = new ArrayList<>();
- new ConditionLoader().execute();
+ if (loadConditionsNow) {
+ ConditionLoader loader = new ConditionLoader();
+ loader.onPostExecute(loader.doInBackground());
+ } else {
+ new ConditionLoader().execute();
+ }
}
public void refreshAll() {
@@ -241,8 +246,12 @@
}
public static ConditionManager get(Context context) {
+ return get(context, true);
+ }
+
+ public static ConditionManager get(Context context, boolean loadConditionsNow) {
if (sInstance == null) {
- sInstance = new ConditionManager(context.getApplicationContext());
+ sInstance = new ConditionManager(context.getApplicationContext(), loadConditionsNow);
}
return sInstance;
}
diff --git a/src/com/android/settings/deviceinfo/SimStatus.java b/src/com/android/settings/deviceinfo/SimStatus.java
index 0acad37..610744b 100644
--- a/src/com/android/settings/deviceinfo/SimStatus.java
+++ b/src/com/android/settings/deviceinfo/SimStatus.java
@@ -362,7 +362,7 @@
mShowLatestAreaInfo = true;
}
}
- PersistableBundle carrierConfig = mCarrierConfigManager.getConfig(
+ PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(
mSir.getSubscriptionId());
mShowICCID = carrierConfig.getBoolean(
CarrierConfigManager.KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL);
diff --git a/src/com/android/settings/notification/ImportanceSeekBarPreference.java b/src/com/android/settings/notification/ImportanceSeekBarPreference.java
index 4da5dbf..b21f9ce 100644
--- a/src/com/android/settings/notification/ImportanceSeekBarPreference.java
+++ b/src/com/android/settings/notification/ImportanceSeekBarPreference.java
@@ -21,6 +21,7 @@
import android.content.Context;
import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.service.notification.NotificationListenerService;
@@ -45,6 +46,8 @@
private SeekBar mSeekBar;
private ColorStateList mActiveSliderTint;
private ColorStateList mInactiveSliderTint;
+ private float mActiveSliderAlpha = 1.0f;
+ private float mInactiveSliderAlpha;
private boolean mAutoOn;
private Handler mHandler;
@@ -57,6 +60,11 @@
mInactiveSliderTint = ColorStateList.valueOf(
context.getColor(R.color.importance_disabled_slider_color));
mHandler = new Handler();
+ final TypedArray ta =
+ context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Theme, 0, 0);
+ mInactiveSliderAlpha =
+ ta.getFloat(com.android.internal.R.styleable.Theme_disabledAlpha, 0.5f);
+ ta.recycle();
}
public ImportanceSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -124,13 +132,12 @@
private void applyAutoUi(ImageView autoButton) {
mSeekBar.setEnabled(!mAutoOn);
- final ColorStateList sliderTint = mAutoOn ? mInactiveSliderTint : mActiveSliderTint;
+ final float alpha = mAutoOn ? mInactiveSliderAlpha : mActiveSliderAlpha;
final ColorStateList starTint = mAutoOn ? mActiveSliderTint : mInactiveSliderTint;
Drawable icon = autoButton.getDrawable().mutate();
icon.setTintList(starTint);
autoButton.setImageDrawable(icon);
- mSeekBar.setProgressTintList(sliderTint);
- mSeekBar.setThumbTintList(sliderTint);
+ mSeekBar.setAlpha(alpha);
if (mAutoOn) {
setProgress(NotificationListenerService.Ranking.IMPORTANCE_DEFAULT);
diff --git a/src/com/android/settings/search/DynamicIndexableContentMonitor.java b/src/com/android/settings/search/DynamicIndexableContentMonitor.java
index 6753a76..a24ec50 100644
--- a/src/com/android/settings/search/DynamicIndexableContentMonitor.java
+++ b/src/com/android/settings/search/DynamicIndexableContentMonitor.java
@@ -34,10 +34,12 @@
import android.os.Looper;
import android.os.Message;
import android.os.UserHandle;
+import android.os.UserManager;
import android.print.PrintManager;
import android.print.PrintServicesLoader;
import android.printservice.PrintServiceInfo;
import android.provider.UserDictionary;
+import android.util.Log;
import android.view.accessibility.AccessibilityManager;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
@@ -53,6 +55,7 @@
public final class DynamicIndexableContentMonitor extends PackageMonitor implements
InputManager.InputDeviceListener,
LoaderManager.LoaderCallbacks<List<PrintServiceInfo>> {
+ private static final String TAG = "DynamicIndexableContentMonitor";
private static final long DELAY_PROCESS_PACKAGE_CHANGE = 2000;
@@ -84,6 +87,7 @@
private Context mContext;
private boolean mHasFeatureIme;
+ private boolean mRegistered;
private static Intent getAccessibilityServiceIntent(String packageName) {
final Intent intent = new Intent(AccessibilityService.SERVICE_INTERFACE);
@@ -100,6 +104,14 @@
public void register(Activity activity, int loaderId) {
mContext = activity;
+ if (!mContext.getSystemService(UserManager.class).isUserUnlocked()) {
+ Log.w(TAG, "Skipping content monitoring because user is locked");
+ mRegistered = false;
+ return;
+ } else {
+ mRegistered = true;
+ }
+
boolean hasFeaturePrinting = mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_PRINTING);
mHasFeatureIme = mContext.getPackageManager().hasSystemFeature(
@@ -151,7 +163,10 @@
register(activity, Looper.getMainLooper(), UserHandle.CURRENT, false);
}
+ @Override
public void unregister() {
+ if (!mRegistered) return;
+
super.unregister();
InputManager inputManager = (InputManager) mContext.getSystemService(
@@ -183,13 +198,17 @@
@Override
public void onPackageModified(String packageName) {
super.onPackageModified(packageName);
- final int state = mContext.getPackageManager().getApplicationEnabledSetting(
- packageName);
- if (state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
- || state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
- postMessage(MSG_PACKAGE_AVAILABLE, packageName);
- } else {
- postMessage(MSG_PACKAGE_UNAVAILABLE, packageName);
+ try {
+ final int state = mContext.getPackageManager().getApplicationEnabledSetting(
+ packageName);
+ if (state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
+ || state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
+ postMessage(MSG_PACKAGE_AVAILABLE, packageName);
+ } else {
+ postMessage(MSG_PACKAGE_UNAVAILABLE, packageName);
+ }
+ } catch (IllegalArgumentException e) {
+ Log.e(TAG, "Package does not exist: " + packageName, e);
}
}
diff --git a/src/com/android/settings/vpn2/ConfigDialogFragment.java b/src/com/android/settings/vpn2/ConfigDialogFragment.java
index 0dbaa9a..788b9a9 100644
--- a/src/com/android/settings/vpn2/ConfigDialogFragment.java
+++ b/src/com/android/settings/vpn2/ConfigDialogFragment.java
@@ -176,6 +176,7 @@
try {
LegacyVpnInfo connected = mService.getLegacyVpnInfo(UserHandle.myUserId());
if (connected != null && profile.key.equals(connected.key)) {
+ VpnUtils.clearLockdownVpn(getContext());
mService.prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN,
UserHandle.myUserId());
}