Snap for 7806961 from 1ab7ad3e40 to sc-v2-release

Change-Id: I74cf9362dd526278cfb7728eeec6d31629a0b374
This commit is contained in:
Android Build Coastguard Worker
2021-10-09 01:07:50 +00:00
7 changed files with 135 additions and 23 deletions

View File

@@ -34,7 +34,6 @@ import android.content.pm.ShortcutManager;
import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
@@ -150,10 +149,6 @@ public class SettingsInitialize extends BroadcastReceiver {
}
private void enableTwoPaneDeepLinkActivityIfNecessary(PackageManager pm, Intent intent) {
if (!TextUtils.equals(intent.getAction(), Intent.ACTION_PRE_BOOT_COMPLETED)) {
return;
}
final ComponentName deepLinkHome = new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
SettingsHomepageActivity.ALIAS_DEEP_LINK);
final int enableState = SplitController.getInstance().isSplitSupported()

View File

@@ -17,6 +17,7 @@
package com.android.settings.activityembedding;
import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -25,6 +26,7 @@ import android.util.Log;
import androidx.annotation.NonNull;
import androidx.window.embedding.ActivityFilter;
import androidx.window.embedding.ActivityRule;
import androidx.window.embedding.SplitController;
import androidx.window.embedding.SplitPairFilter;
import androidx.window.embedding.SplitPairRule;
@@ -34,6 +36,7 @@ import com.android.settings.Settings;
import com.android.settings.SubSettings;
import com.android.settings.Utils;
import com.android.settings.homepage.SettingsHomepageActivity;
import com.android.settings.overlay.FeatureFactory;
import java.util.HashSet;
import java.util.Set;
@@ -70,6 +73,8 @@ public class ActivityEmbeddingRulesController {
null /* secondaryIntentAction */,
true /* finishPrimaryWithSecondary */,
true /* finishSecondaryWithPrimary */);
// Set rules here to show full screen for specified Activity.
registerAlwaysExpandRule();
}
/** Register a SplitPairRule for 2-pane. */
@@ -85,21 +90,31 @@ public class ActivityEmbeddingRulesController {
SplitController.getInstance().registerRule(new SplitPairRule(filters,
finishPrimaryWithSecondary,
finishSecondaryWithPrimary, true /* clearTop */,
finishSecondaryWithPrimary,
true /* clearTop */,
ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context),
ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context),
ActivityEmbeddingUtils.SPLIT_RATIO,
LayoutDirection.LOCALE));
}
private void registerAlwaysExpandRule() {
final Set<ActivityFilter> activityFilters = new HashSet<>();
final Intent searchIntent = FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
.buildSearchIntent(mContext, SettingsEnums.SETTINGS_HOMEPAGE);
addActivityFilter(activityFilters, searchIntent);
mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */));
}
private void registerHomepagePlaceholderRule() {
final Set<ActivityFilter> activityFilters = new HashSet<>();
activityFilters.add(new ActivityFilter(getComponentName(SettingsHomepageActivity.class),
null /* intentAction */));
activityFilters.add(new ActivityFilter(getComponentName(Settings.class),
null /* intentAction */));
activityFilters.add(new ActivityFilter(new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
SettingsHomepageActivity.ALIAS_DEEP_LINK), null /* intentAction */));
addActivityFilter(activityFilters, SettingsHomepageActivity.class);
addActivityFilter(activityFilters, Settings.class);
addActivityFilter(activityFilters, new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
SettingsHomepageActivity.ALIAS_DEEP_LINK));
final Intent intent = new Intent();
intent.setComponent(getComponentName(Settings.NetworkDashboardActivity.class));
final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule(
@@ -113,6 +128,22 @@ public class ActivityEmbeddingRulesController {
mSplitController.registerRule(placeholderRule);
}
private void addActivityFilter(Set<ActivityFilter> activityFilters,
Class<? extends Activity> activityClass) {
activityFilters.add(new ActivityFilter(getComponentName(activityClass),
null /* intentAction */));
}
private void addActivityFilter(Set<ActivityFilter> activityFilters, Intent intent) {
activityFilters.add(new ActivityFilter(new ComponentName("*" /* pkg */, "*" /* cls */),
intent.getAction()));
}
private void addActivityFilter(Set<ActivityFilter> activityFilters,
ComponentName componentName) {
activityFilters.add(new ActivityFilter(componentName, null /* intentAction */));
}
@NonNull
private ComponentName getComponentName(Class<? extends Activity> activityClass) {
return new ComponentName(mContext.getPackageName(), activityClass.getName());

View File

@@ -102,7 +102,9 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
}
PowerProfile powerProfile = new PowerProfile(context);
return powerProfile.getAveragePower(PowerProfile.POWER_SCREEN_FULL)
// Cheap hack to try to figure out if the power_profile.xml was populated.
return powerProfile.getAveragePowerForOrdinal(
PowerProfile.POWER_GROUP_DISPLAY_SCREEN_FULL, 0)
>= MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP;
}
};

View File

@@ -18,9 +18,11 @@ package com.android.settings.homepage;
import android.animation.LayoutTransition;
import android.app.ActivityManager;
import android.app.PendingIntent;
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
@@ -34,15 +36,16 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.window.embedding.SplitController;
import com.android.settings.R;
import com.android.settings.Settings;
import com.android.settings.Utils;
import com.android.settings.accounts.AvatarViewMixin;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.core.CategoryMixin;
import com.android.settings.core.FeatureFlags;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.homepage.contextualcards.ContextualCardsFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;

View File

@@ -32,7 +32,9 @@ import androidx.fragment.app.FragmentManager;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.network.helper.ConfirmationSimDeletionPredicate;
import com.android.settings.system.ResetDashboardFragment;
import com.android.settings.wifi.dpp.WifiDppUtils;
public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener {
@@ -73,13 +75,24 @@ public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment imp
}
if (which == DialogInterface.BUTTON_POSITIVE) {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
RecoverySystem.wipeEuiccData(
getContext(), PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK);
}
});
if (ConfirmationSimDeletionPredicate.getSingleton().test(getContext())) {
// Create a "verify it's you" verification over keyguard
// when "erase" button been pressed.
// This might protect from erasing by some automation process.
WifiDppUtils.showLockScreen(getContext(), () -> runAsyncWipe());
} else {
runAsyncWipe();
}
}
}
private void runAsyncWipe() {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
RecoverySystem.wipeEuiccData(
getContext(), PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK);
}
});
}
}

View File

@@ -0,0 +1,66 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.network.helper;
import android.app.KeyguardManager;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import java.util.function.Predicate;
/**
* {@link Predicate} for detecting the configuration of confirm SIM deletion.
*/
public class ConfirmationSimDeletionPredicate implements Predicate<Context> {
public static final String KEY_CONFIRM_SIM_DELETION = "confirm_sim_deletion";
private static final ConfirmationSimDeletionPredicate sSingleton =
new ConfirmationSimDeletionPredicate();
// Get singleton of this predicate
public static final ConfirmationSimDeletionPredicate getSingleton() {
return sSingleton;
}
/**
* Get default configuration of confirm SIM deletion.
*
* @param Context context
* @return the configuration of confirm SIM deletion
*/
private static boolean getDefaultValue(Context context) {
return context.getResources()
.getBoolean(R.bool.config_sim_deletion_confirmation_default_on);
}
/**
* Get the configuration of confirm SIM deletion.
*
* @param Context context
* @return the configuration of confirm SIM deletion
*/
public boolean test(Context context) {
final KeyguardManager keyguardManager = context.getSystemService(KeyguardManager.class);
if ((keyguardManager != null) && !keyguardManager.isKeyguardSecure()) {
return false;
}
return Settings.Global.getInt(context.getContentResolver(), KEY_CONFIRM_SIM_DELETION,
getDefaultValue(context) ? 1 : 0) == 1;
}
}

View File

@@ -26,6 +26,7 @@ import androidx.preference.TwoStatePreference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.helper.ConfirmationSimDeletionPredicate;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.dpp.WifiDppUtils;
@@ -34,7 +35,8 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
/** Enable/disable user confirmation before deleting an eSim */
public class ConfirmSimDeletionPreferenceController extends BasePreferenceController implements
Preference.OnPreferenceChangeListener{
public static final String KEY_CONFIRM_SIM_DELETION = "confirm_sim_deletion";
public static final String KEY_CONFIRM_SIM_DELETION =
ConfirmationSimDeletionPredicate.KEY_CONFIRM_SIM_DELETION;
private boolean mConfirmationDefaultOn;
private MetricsFeatureProvider mMetricsFeatureProvider;