Merge "Use the correct userId when checking if disabled by admin."
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 42ae602..32e5cc1 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -417,7 +417,7 @@
int adminEnforcedQuality = mDPM.getPasswordQuality(null);
EnforcedAdmin enforcedAdmin = RestrictedLockUtils.checkIfPasswordQualityIsSet(
- getActivity());
+ getActivity(), mUserId);
for (int i = entries.getPreferenceCount() - 1; i >= 0; --i) {
Preference pref = entries.getPreference(i);
if (pref instanceof RestrictedPreference) {
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 5ce5cfc..840cd59 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -482,8 +482,8 @@
boolean serviceAllowed =
permittedServices == null || permittedServices.contains(packageName);
if (!serviceAllowed && !serviceEnabled) {
- EnforcedAdmin admin =
- RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(getActivity());
+ EnforcedAdmin admin = RestrictedLockUtils.checkIfAccessibilityServiceDisallowed(
+ getActivity(), serviceInfo.packageName, UserHandle.myUserId());
if (admin != null) {
preference.setDisabledByAdmin(admin);
} else {
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 418fd58..33c29bd 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -272,7 +272,7 @@
mUserHandle.getIdentifier());
if (admin == null) {
admin = RestrictedLockUtils.checkIfAccountManagementDisabled(
- getPrefContext(), mAccount.type);
+ getPrefContext(), mAccount.type, mUserHandle.getIdentifier());
}
RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getPrefContext(),
removeAccount, admin);
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java
index d4f824f..3f691e3 100644
--- a/src/com/android/settings/accounts/AddAccountSettings.java
+++ b/src/com/android/settings/accounts/AddAccountSettings.java
@@ -34,11 +34,14 @@
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settingslib.RestrictedLockUtils;
import java.io.IOException;
import static android.content.Intent.EXTRA_USER;
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
/**
* Entry point Activity for account setup. Works as follows
*
@@ -171,6 +174,9 @@
switch (requestCode) {
case CHOOSE_ACCOUNT_REQUEST:
if (resultCode == RESULT_CANCELED) {
+ if (data != null) {
+ startActivityAsUser(data, mUserHandle);
+ }
setResult(resultCode);
finish();
return;
diff --git a/src/com/android/settings/accounts/ChooseAccountActivity.java b/src/com/android/settings/accounts/ChooseAccountActivity.java
index 80017cd..2f904cf 100644
--- a/src/com/android/settings/accounts/ChooseAccountActivity.java
+++ b/src/com/android/settings/accounts/ChooseAccountActivity.java
@@ -39,6 +39,7 @@
import com.android.settings.InstrumentedPreferenceActivity;
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settingslib.RestrictedLockUtils;
import java.util.ArrayList;
import java.util.Collections;
@@ -48,6 +49,8 @@
import static android.content.Intent.EXTRA_USER;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
/**
* Activity asking a user to select an account to be set up.
*
@@ -160,9 +163,19 @@
}
}
+ final Context context = getPreferenceScreen().getContext();
if (mProviderList.size() == 1) {
- // If there's only one provider that matches, just run it.
- finishWithAccountType(mProviderList.get(0).type);
+ // There's only one provider that matches. If it is disabled by admin show the
+ // support dialog otherwise run it.
+ EnforcedAdmin admin = RestrictedLockUtils.checkIfAccountManagementDisabled(
+ context, mProviderList.get(0).type, mUserHandle.getIdentifier());
+ if (admin != null) {
+ setResult(RESULT_CANCELED, RestrictedLockUtils.getShowAdminSupportDetailsIntent(
+ context, admin));
+ finish();
+ } else {
+ finishWithAccountType(mProviderList.get(0).type);
+ }
} else if (mProviderList.size() > 0) {
Collections.sort(mProviderList);
mAddAccountGroup.removeAll();
@@ -170,7 +183,7 @@
Drawable drawable = getDrawableForType(pref.type);
ProviderPreference p = new ProviderPreference(getPreferenceScreen().getContext(),
pref.type, drawable, pref.name);
- p.checkAccountManagementAndSetDisabled();
+ p.checkAccountManagementAndSetDisabled(mUserHandle.getIdentifier());
mAddAccountGroup.addPreference(p);
}
} else {
diff --git a/src/com/android/settings/accounts/ProviderPreference.java b/src/com/android/settings/accounts/ProviderPreference.java
index 31f0c8e..817c3b6 100644
--- a/src/com/android/settings/accounts/ProviderPreference.java
+++ b/src/com/android/settings/accounts/ProviderPreference.java
@@ -46,9 +46,9 @@
return mAccountType;
}
- public void checkAccountManagementAndSetDisabled() {
+ public void checkAccountManagementAndSetDisabled(int userId) {
EnforcedAdmin admin = RestrictedLockUtils.checkIfAccountManagementDisabled(
- getContext(), getAccountType());
+ getContext(), getAccountType(), userId);
setDisabledByAdmin(admin);
}
}
diff --git a/src/com/android/settings/inputmethod/InputMethodPreference.java b/src/com/android/settings/inputmethod/InputMethodPreference.java
index c807e8a..11464bf 100755
--- a/src/com/android/settings/inputmethod/InputMethodPreference.java
+++ b/src/com/android/settings/inputmethod/InputMethodPreference.java
@@ -21,6 +21,7 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.os.UserHandle;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
@@ -121,11 +122,6 @@
setOnPreferenceClickListener(this);
setOnPreferenceChangeListener(this);
useAdminDisabledSummary(true);
- if (!isAllowedByOrganization) {
- EnforcedAdmin admin =
- RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(context);
- setDisabledByAdmin(admin);
- }
}
public InputMethodInfo getInputMethodInfo() {
@@ -192,11 +188,23 @@
void updatePreferenceViews() {
final boolean isAlwaysChecked = mInputMethodSettingValues.isAlwaysCheckedIme(
mImi, getContext());
- // Only when this preference has a switch and an input method should be always enabled,
+ // When this preference has a switch and an input method should be always enabled,
// this preference should be disabled to prevent accidentally disabling an input method.
- setEnabled(!((isAlwaysChecked && isImeEnabler()) || (!mIsAllowedByOrganization)));
+ // This preference should also be disabled in case the admin does not allow this input
+ // method.
+ if (isAlwaysChecked && isImeEnabler()) {
+ setDisabledByAdmin(null);
+ setEnabled(false);
+ } else if (!mIsAllowedByOrganization) {
+ EnforcedAdmin admin =
+ RestrictedLockUtils.checkIfInputMethodDisallowed(getContext(),
+ mImi.getPackageName(), UserHandle.myUserId());
+ setDisabledByAdmin(admin);
+ } else {
+ setEnabled(true);
+ }
setChecked(mInputMethodSettingValues.isEnabledImi(mImi));
- if (mIsAllowedByOrganization) {
+ if (!isDisabledByAdmin()) {
setSummary(getSummaryString());
}
}