Merge "Make sure policy transparency is applied in all cases" into main
This commit is contained in:
@@ -41,8 +41,8 @@ import android.text.Html;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
@@ -125,12 +125,12 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
|
|||||||
protected CharSequence getPositiveButtonText() {
|
protected CharSequence getPositiveButtonText() {
|
||||||
final Bundle bundle = getArguments();
|
final Bundle bundle = getArguments();
|
||||||
if (TextUtils.isEmpty(bundle.getString(EXTRA_KEY))) {
|
if (TextUtils.isEmpty(bundle.getString(EXTRA_KEY))) {
|
||||||
return getContext().getString(
|
return getContext()
|
||||||
R.string.credman_confirmation_turn_off_positive_button);
|
.getString(R.string.credman_confirmation_turn_off_positive_button);
|
||||||
}
|
}
|
||||||
|
|
||||||
return getContext().getString(
|
return getContext()
|
||||||
R.string.credman_confirmation_change_provider_positive_button);
|
.getString(R.string.credman_confirmation_change_provider_positive_button);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,21 +259,21 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
|
|||||||
return mCredentialManager;
|
return mCredentialManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CombinedProviderInfo> getAllProviders() {
|
private List<CombinedProviderInfo> getAllProviders(int userId) {
|
||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
final List<AutofillServiceInfo> autofillProviders =
|
final List<AutofillServiceInfo> autofillProviders =
|
||||||
AutofillServiceInfo.getAvailableServices(context, getUser());
|
AutofillServiceInfo.getAvailableServices(context, userId);
|
||||||
|
|
||||||
final CredentialManager service = getCredentialProviderService();
|
final CredentialManager service = getCredentialProviderService();
|
||||||
final List<CredentialProviderInfo> credManProviders = new ArrayList<>();
|
final List<CredentialProviderInfo> credManProviders = new ArrayList<>();
|
||||||
if (service != null) {
|
if (service != null) {
|
||||||
credManProviders.addAll(
|
credManProviders.addAll(
|
||||||
service.getCredentialProviderServices(
|
service.getCredentialProviderServices(
|
||||||
getUser(),
|
userId,
|
||||||
CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_INCLUDING_HIDDEN));
|
CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_INCLUDING_HIDDEN));
|
||||||
}
|
}
|
||||||
|
|
||||||
final String selectedAutofillProvider = getSelectedAutofillProvider(context, getUser());
|
final String selectedAutofillProvider = getSelectedAutofillProvider(context, userId);
|
||||||
return CombinedProviderInfo.buildMergedList(
|
return CombinedProviderInfo.buildMergedList(
|
||||||
autofillProviders, credManProviders, selectedAutofillProvider);
|
autofillProviders, credManProviders, selectedAutofillProvider);
|
||||||
}
|
}
|
||||||
@@ -285,7 +285,8 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
|
|||||||
|
|
||||||
protected List<DefaultAppInfo> getCandidates() {
|
protected List<DefaultAppInfo> getCandidates() {
|
||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
final List<CombinedProviderInfo> allProviders = getAllProviders();
|
final int userId = getUser();
|
||||||
|
final List<CombinedProviderInfo> allProviders = getAllProviders(userId);
|
||||||
final List<DefaultAppInfo> candidates = new ArrayList<>();
|
final List<DefaultAppInfo> candidates = new ArrayList<>();
|
||||||
|
|
||||||
for (CombinedProviderInfo cpi : allProviders) {
|
for (CombinedProviderInfo cpi : allProviders) {
|
||||||
@@ -295,10 +296,10 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
|
|||||||
if (brandingService != null) {
|
if (brandingService != null) {
|
||||||
candidates.add(
|
candidates.add(
|
||||||
new CredentialManagerDefaultAppInfo(
|
new CredentialManagerDefaultAppInfo(
|
||||||
context, mPm, getUser(), brandingService, cpi));
|
context, mPm, userId, brandingService, cpi));
|
||||||
} else if (appInfo != null) {
|
} else if (appInfo != null) {
|
||||||
candidates.add(
|
candidates.add(
|
||||||
new CredentialManagerDefaultAppInfo(context, mPm, getUser(), appInfo, cpi));
|
new CredentialManagerDefaultAppInfo(context, mPm, userId, appInfo, cpi));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,9 +362,23 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getDefaultKey() {
|
protected String getDefaultKey() {
|
||||||
final CombinedProviderInfo topProvider =
|
final int userId = getUser();
|
||||||
CombinedProviderInfo.getTopProvider(getAllProviders());
|
final @Nullable CombinedProviderInfo topProvider =
|
||||||
return topProvider == null ? "" : topProvider.getApplicationInfo().packageName;
|
CombinedProviderInfo.getTopProvider(getAllProviders(userId));
|
||||||
|
|
||||||
|
if (topProvider != null) {
|
||||||
|
// Apply device admin restrictions to top provider.
|
||||||
|
if (topProvider.getDeviceAdminRestrictions(getContext(), userId) != null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
ApplicationInfo appInfo = topProvider.getApplicationInfo();
|
||||||
|
if (appInfo != null) {
|
||||||
|
return appInfo.packageName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -392,7 +407,7 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
|
|||||||
@Override
|
@Override
|
||||||
protected boolean setDefaultKey(String key) {
|
protected boolean setDefaultKey(String key) {
|
||||||
// Get the list of providers and see if any match the key (package name).
|
// Get the list of providers and see if any match the key (package name).
|
||||||
final List<CombinedProviderInfo> allProviders = getAllProviders();
|
final List<CombinedProviderInfo> allProviders = getAllProviders(getUser());
|
||||||
CombinedProviderInfo matchedProvider = null;
|
CombinedProviderInfo matchedProvider = null;
|
||||||
for (CombinedProviderInfo cpi : allProviders) {
|
for (CombinedProviderInfo cpi : allProviders) {
|
||||||
if (cpi.getApplicationInfo().packageName.equals(key)) {
|
if (cpi.getApplicationInfo().packageName.equals(key)) {
|
||||||
|
|||||||
@@ -92,12 +92,14 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
|
|||||||
@Override
|
@Override
|
||||||
public void updateState(@NonNull Preference preference) {
|
public void updateState(@NonNull Preference preference) {
|
||||||
final CombinedProviderInfo topProvider = getTopProvider();
|
final CombinedProviderInfo topProvider = getTopProvider();
|
||||||
|
final int userId = getUser();
|
||||||
|
|
||||||
if (topProvider != null && mContext != null) {
|
if (topProvider != null && mContext != null) {
|
||||||
updatePreferenceForProvider(
|
updatePreferenceForProvider(
|
||||||
preference,
|
preference,
|
||||||
topProvider.getAppName(mContext),
|
topProvider.getAppName(mContext),
|
||||||
topProvider.getSettingsSubtitle(),
|
topProvider.getSettingsSubtitle(),
|
||||||
topProvider.getAppIcon(mContext, getUser()),
|
topProvider.getAppIcon(mContext, userId),
|
||||||
topProvider.getPackageName(),
|
topProvider.getPackageName(),
|
||||||
topProvider.getSettingsActivity());
|
topProvider.getSettingsActivity());
|
||||||
} else {
|
} else {
|
||||||
@@ -149,7 +151,17 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
private @Nullable CombinedProviderInfo getTopProvider() {
|
private @Nullable CombinedProviderInfo getTopProvider() {
|
||||||
return CombinedProviderInfo.getTopProvider(getAllProviders(getUser()));
|
final int userId = getUser();
|
||||||
|
final @Nullable CombinedProviderInfo topProvider =
|
||||||
|
CombinedProviderInfo.getTopProvider(getAllProviders(userId));
|
||||||
|
|
||||||
|
// Apply device admin restrictions to top provider.
|
||||||
|
if (topProvider != null
|
||||||
|
&& topProvider.getDeviceAdminRestrictions(mContext, userId) != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return topProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user