Merge "Use SettingsLib's MainSwitchBar to replace SwitchBar in Settings."
diff --git a/res/drawable/ic_calls_sms.xml b/res/drawable/ic_calls_sms.xml
index e1217a0..2033e8f 100644
--- a/res/drawable/ic_calls_sms.xml
+++ b/res/drawable/ic_calls_sms.xml
@@ -18,13 +18,12 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
- android:tint="?android:attr/colorControlNormal">
+ android:tint="?android:attr/colorControlNormal"
+ >
+
<path
- android:fillColor="@android:color/white"
- android:pathData="M15.2,18.21c1.21,0.41 2.48,0.67 3.8,0.76v-1.5c-0.88,-0.07 -1.75,-0.22 -2.6,-0.45l-1.2,1.19zM6.54,5h-1.5c0.09,1.32 0.35,2.59 0.75,3.79l1.2,-1.21c-0.24,-0.83 -0.39,-1.7 -0.45,-2.58zM14,8h5V5h-5z"
- android:strokeAlpha="0.3"
- android:fillAlpha="0"/>
+ android:pathData="M 0 0 H 24 V 24 H 0 V 0 Z" />
<path
- android:fillColor="@android:color/white"
- android:pathData="M20,15.5c-1.25,0 -2.45,-0.2 -3.57,-0.57 -0.1,-0.03 -0.21,-0.05 -0.31,-0.05 -0.26,0 -0.51,0.1 -0.71,0.29l-2.2,2.2c-2.83,-1.44 -5.15,-3.75 -6.59,-6.58l2.2,-2.21c0.28,-0.27 0.36,-0.66 0.25,-1.01C8.7,6.45 8.5,5.25 8.5,4c0,-0.55 -0.45,-1 -1,-1L4,3c-0.55,0 -1,0.45 -1,1 0,9.39 7.61,17 17,17 0.55,0 1,-0.45 1,-1v-3.5c0,-0.55 -0.45,-1 -1,-1zM5.03,5h1.5c0.07,0.88 0.22,1.75 0.46,2.59L5.79,8.8c-0.41,-1.21 -0.67,-2.48 -0.76,-3.8zM19,18.97c-1.32,-0.09 -2.6,-0.35 -3.8,-0.76l1.2,-1.2c0.85,0.24 1.72,0.39 2.6,0.45v1.51zM12,3v10l3,-3h6L21,3h-9zM19,8h-5L14,5h5v3z"/>
-</vector>
\ No newline at end of file
+ android:fillColor="#FF000000"
+ android:pathData="M20.17,14.85l-3.26-0.65c-0.33-0.07-0.67,0.04-0.9,0.27l-2.62,2.62c-2.75-1.49-5.01-3.75-6.5-6.5l2.62-2.62 c0.24-0.24,0.34-0.58,0.27-0.9L9.13,3.82c-0.09-0.47-0.5-0.8-0.98-0.8H4c-0.56,0-1.03,0.47-1,1.03c0.17,2.91,1.04,5.63,2.43,8.01 c1.57,2.69,3.81,4.93,6.5,6.5c2.38,1.39,5.1,2.26,8.01,2.43c0.56,0.03,1.03-0.44,1.03-1v-4.15C20.97,15.36,20.64,14.95,20.17,14.85 L20.17,14.85z M12,3v10l3-3h6V3H12z M19,8h-5V5h5V8z" />
+</vector>
diff --git a/res/drawable/ic_sim_card.xml b/res/drawable/ic_sim_card.xml
index 1fc7249..28388e2 100644
--- a/res/drawable/ic_sim_card.xml
+++ b/res/drawable/ic_sim_card.xml
@@ -18,26 +18,30 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
- android:tint="?android:attr/colorControlNormal">
+ android:tint="?android:attr/colorControlNormal"
+ >
+
<path
- android:fillColor="@android:color/white"
- android:pathData="M14.5,2H8L4,6v10.5C4,17.33 4.67,18 5.5,18h9c0.83,0 1.5,-0.67 1.5,-1.5v-13C16,2.67 15.33,2 14.5,2zM14.5,16.5h-9V6.62L8.62,3.5h5.88V16.5z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M18,2h-8L4,8v12c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,4v16H6V8.83L10.83,4L18,4L18,4z" />
<path
- android:fillColor="@android:color/white"
- android:pathData="M6.5,9h1.5v3h-1.5z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M 7 17 H 9 V 19 H 7 V 17 Z" />
<path
- android:fillColor="@android:color/white"
- android:pathData="M6.5,13.5h1.5v1.5h-1.5z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M 15 17 H 17 V 19 H 15 V 17 Z" />
<path
- android:fillColor="@android:color/white"
- android:pathData="M12,13.5h1.5v1.5h-1.5z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M 7 11 H 9 V 15 H 7 V 11 Z" />
<path
- android:fillColor="@android:color/white"
- android:pathData="M9.25,9h1.5v1.5h-1.5z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M 11 15 H 13 V 19 H 11 V 15 Z" />
<path
- android:fillColor="@android:color/white"
- android:pathData="M12,9h1.5v3h-1.5z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M 11 11 H 13 V 13 H 11 V 11 Z" />
<path
- android:fillColor="@android:color/white"
- android:pathData="M9.25,12h1.5v3h-1.5z"/>
+ android:fillColor="#FF000000"
+ android:pathData="M 15 11 H 17 V 15 H 15 V 11 Z" />
+ <path
+ android:pathData="M0,0h24v24H0V0z" />
</vector>
diff --git a/res/drawable/ic_sms.xml b/res/drawable/ic_sms.xml
index cb388e3..8cc0a4c 100644
--- a/res/drawable/ic_sms.xml
+++ b/res/drawable/ic_sms.xml
@@ -16,10 +16,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
- android:viewportWidth="24.0"
- android:viewportHeight="24.0"
- android:tint="?android:attr/colorControlNormal">
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?android:attr/colorControlNormal"
+ >
+
<path
android:fillColor="#FF000000"
- android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM9,11L7,11L7,9h2v2zM13,11h-2L11,9h2v2zM17,11h-2L15,9h2v2z"/>
-</vector>
\ No newline at end of file
+ android:pathData="M20 2H4c-1.1 0-2 0.9-2 2v18l4.75-4h14c0.35 0 1.25-0.9 1.25-2V4c0-1.1-0.9-2-2-2zm0 14H4V4h16v12zM9 11H7V9h2v2zm8 0h-2V9h2v2zm-4 0h-2V9h2v2z" />
+ <path
+ android:pathData="M0 0h24v24H0V0z" />
+</vector>
diff --git a/res/layout/settings_collapsing_base_layout.xml b/res/layout/settings_collapsing_base_layout.xml
index 5858fc1..298f9e1 100644
--- a/res/layout/settings_collapsing_base_layout.xml
+++ b/res/layout/settings_collapsing_base_layout.xml
@@ -24,7 +24,7 @@
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_layout"
android:layout_width="match_parent"
- android:layout_height="160dp"
+ android:layout_height="180dp"
android:theme="@style/Theme.CollapsingToolbar.Settings">
<com.google.android.material.appbar.CollapsingToolbarLayout
@@ -37,6 +37,7 @@
app:collapsedTitleTextAppearance="@style/ToolbarText.Collapsed"
app:statusBarScrim="?android:attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
+ app:expandedTitleMarginStart="18dp"
app:toolbarId="@id/tool_bar">
<androidx.appcompat.widget.Toolbar
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3892c5e..cdf1995 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -887,7 +887,7 @@
<style name="ToolbarText"
parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title" >
- <item name="android:textSize">32sp</item>
+ <item name="android:textSize">36sp</item>
</style>
<style name="ToolbarText.MoreThanTwoLines">
diff --git a/src/com/android/settings/accounts/AccountTypePreference.java b/src/com/android/settings/accounts/AccountTypePreference.java
index c82a599..8df5767 100644
--- a/src/com/android/settings/accounts/AccountTypePreference.java
+++ b/src/com/android/settings/accounts/AccountTypePreference.java
@@ -30,7 +30,7 @@
import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
public class AccountTypePreference extends AppPreference implements OnPreferenceClickListener {
/**
diff --git a/src/com/android/settings/applications/ProcessStatsPreference.java b/src/com/android/settings/applications/ProcessStatsPreference.java
index 4249381..b4df3ee 100644
--- a/src/com/android/settings/applications/ProcessStatsPreference.java
+++ b/src/com/android/settings/applications/ProcessStatsPreference.java
@@ -22,7 +22,7 @@
import android.text.format.Formatter;
import android.util.Log;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
public class ProcessStatsPreference extends AppPreference {
static final String TAG = "ProcessStatsPreference";
diff --git a/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java b/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java
index bc7b855..be53fab 100644
--- a/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java
+++ b/src/com/android/settings/applications/managedomainurls/DomainAppPreference.java
@@ -21,14 +21,11 @@
import android.os.UserHandle;
import android.util.ArraySet;
import android.util.IconDrawableFactory;
-import android.view.View;
-
-import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
public class DomainAppPreference extends AppPreference {
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
index 2126109..5ab4754 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
@@ -46,11 +46,11 @@
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.AppSwitchPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.widget.AppSwitchPreference;
import com.android.settingslib.widget.FooterPreference;
import org.xmlpull.v1.XmlPullParserException;
diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
index c5d848a..ffab617 100644
--- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
+++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
@@ -41,7 +41,7 @@
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.EmptyTextSettings;
import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
index 15757a0..57b7412 100644
--- a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
+++ b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureSettings.java
@@ -42,7 +42,7 @@
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.EmptyTextSettings;
import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.text.Collator;
import java.util.ArrayList;
diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java
index 6bfd01a..881affc 100644
--- a/src/com/android/settings/core/FeatureFlags.java
+++ b/src/com/android/settings/core/FeatureFlags.java
@@ -21,7 +21,6 @@
*/
public class FeatureFlags {
public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher";
- public static final String DYNAMIC_SYSTEM = "settings_dynamic_system";
public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
public static final String WIFI_DETAILS_DATAUSAGE_HEADER =
"settings_wifi_details_datausage_header";
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index e0c9820..1b2be80 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -39,11 +39,13 @@
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerListHelper;
import com.android.settings.core.SettingsBaseActivity;
+import com.android.settings.homepage.HomepagePreference;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.PrimarySwitchPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.ProviderTile;
import com.android.settingslib.drawer.Tile;
@@ -536,6 +538,10 @@
@VisibleForTesting
Preference createPreference(Tile tile) {
+ if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)
+ && TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) {
+ return new HomepagePreference(getPrefContext());
+ }
return tile instanceof ProviderTile
? new SwitchPreference(getPrefContext())
: tile.hasSwitch()
diff --git a/src/com/android/settings/datausage/AppDataUsagePreference.java b/src/com/android/settings/datausage/AppDataUsagePreference.java
index 52e24ed..3025a49 100644
--- a/src/com/android/settings/datausage/AppDataUsagePreference.java
+++ b/src/com/android/settings/datausage/AppDataUsagePreference.java
@@ -24,7 +24,7 @@
import com.android.settingslib.net.UidDetail;
import com.android.settingslib.net.UidDetailProvider;
import com.android.settingslib.utils.ThreadUtils;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.text.NumberFormat;
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
index ebd8894..a41b582 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
@@ -24,11 +24,11 @@
import com.android.settings.R;
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.widget.AppSwitchPreference;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedPreferenceHelper;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
+import com.android.settingslib.widget.AppSwitchPreference;
public class UnrestrictedDataAccessPreference extends AppSwitchPreference implements
DataSaverBackend.Listener {
diff --git a/src/com/android/settings/development/DSULoader.java b/src/com/android/settings/development/DSULoader.java
index 1c897c4..d4fa0c6 100644
--- a/src/com/android/settings/development/DSULoader.java
+++ b/src/com/android/settings/development/DSULoader.java
@@ -55,8 +55,6 @@
* also offers the flexibility to overwrite the default setting and load OEMs owned images.
*/
public class DSULoader extends ListActivity {
- public static final String PROPERTY_KEY_FEATURE_FLAG =
- "persist.sys.fflag.override.settings_dynamic_system";
private static final int Q_VNDK_BASE = 28;
private static final int Q_OS_BASE = 10;
@@ -344,7 +342,6 @@
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
- SystemProperties.set(PROPERTY_KEY_FEATURE_FLAG, "1");
String dsuList = SystemProperties.get(PROPERTY_KEY_LIST);
Slog.e(TAG, "Try to get DSU list from: " + PROPERTY_KEY_LIST);
if (dsuList == null || dsuList.isEmpty()) {
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java b/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
index d89df79..7670ef1 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
@@ -35,7 +35,6 @@
static {
PERSISTENT_FLAGS = new HashSet<>();
PERSISTENT_FLAGS.add(FeatureFlags.HEARING_AID_SETTINGS);
- PERSISTENT_FLAGS.add(FeatureFlags.DYNAMIC_SYSTEM);
}
public static boolean isEnabled(Context context, String feature) {
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagPreference.java b/src/com/android/settings/development/featureflags/FeatureFlagPreference.java
index 0e0c7a6..d6bdb77 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagPreference.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagPreference.java
@@ -38,21 +38,16 @@
} else {
isFeatureEnabled = FeatureFlagUtils.isEnabled(context, key);
}
- setCheckedInternal(isFeatureEnabled);
+ super.setChecked(isFeatureEnabled);
}
@Override
public void setChecked(boolean isChecked) {
- setCheckedInternal(isChecked);
+ super.setChecked(isChecked);
if (mIsPersistent) {
FeatureFlagPersistent.setEnabled(getContext(), mKey, isChecked);
} else {
FeatureFlagUtils.setEnabled(getContext(), mKey, isChecked);
}
}
-
- private void setCheckedInternal(boolean isChecked) {
- super.setChecked(isChecked);
- setSummary(Boolean.toString(isChecked));
- }
}
diff --git a/src/com/android/settings/enterprise/ApplicationListPreferenceController.java b/src/com/android/settings/enterprise/ApplicationListPreferenceController.java
index 2719818..0d50bec 100644
--- a/src/com/android/settings/enterprise/ApplicationListPreferenceController.java
+++ b/src/com/android/settings/enterprise/ApplicationListPreferenceController.java
@@ -28,7 +28,7 @@
import com.android.settings.applications.UserAppInfo;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.List;
diff --git a/src/com/android/settings/fuelgauge/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
index 8cac2b2..b75acc6 100644
--- a/src/com/android/settings/fuelgauge/PowerGaugePreference.java
+++ b/src/com/android/settings/fuelgauge/PowerGaugePreference.java
@@ -25,7 +25,7 @@
import com.android.settings.R;
import com.android.settings.Utils;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
/**
* Custom preference for displaying battery usage info as a bar and an icon on
diff --git a/src/com/android/settings/location/AppSettingsInjector.java b/src/com/android/settings/location/AppSettingsInjector.java
index bea623e..7bea999 100644
--- a/src/com/android/settings/location/AppSettingsInjector.java
+++ b/src/com/android/settings/location/AppSettingsInjector.java
@@ -27,7 +27,7 @@
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.location.InjectedSetting;
import com.android.settingslib.location.SettingsInjector;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
/**
* Adds the preferences specified by the {@link InjectedSetting} objects to a preference group.
diff --git a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
index d647826..812a440 100644
--- a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
+++ b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java
@@ -29,7 +29,7 @@
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settingslib.location.RecentLocationApps;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java
index df0fa40..e0e3f9a 100644
--- a/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java
+++ b/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java
@@ -27,7 +27,7 @@
import com.android.settings.R;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settingslib.location.RecentLocationApps;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/notification/NotificationAccessSettings.java b/src/com/android/settings/notification/NotificationAccessSettings.java
index 65ad571..12d6295 100644
--- a/src/com/android/settings/notification/NotificationAccessSettings.java
+++ b/src/com/android/settings/notification/NotificationAccessSettings.java
@@ -47,7 +47,7 @@
import com.android.settings.widget.EmptyTextSettings;
import com.android.settingslib.applications.ServiceListing;
import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.List;
diff --git a/src/com/android/settings/notification/zen/ZenAccessSettings.java b/src/com/android/settings/notification/zen/ZenAccessSettings.java
index daa2e50..a951d83 100644
--- a/src/com/android/settings/notification/zen/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/zen/ZenAccessSettings.java
@@ -37,7 +37,7 @@
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.EmptyTextSettings;
import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/src/com/android/settings/notification/zen/ZenModeAddBypassingAppsPreferenceController.java b/src/com/android/settings/notification/zen/ZenModeAddBypassingAppsPreferenceController.java
index a861ab2..e752913 100644
--- a/src/com/android/settings/notification/zen/ZenModeAddBypassingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModeAddBypassingAppsPreferenceController.java
@@ -37,7 +37,7 @@
import com.android.settings.notification.app.AppChannelsBypassingDndSettings;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java b/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java
index fc034e5..b036d8f 100644
--- a/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenModeAllBypassingAppsPreferenceController.java
@@ -37,7 +37,7 @@
import com.android.settings.notification.app.AppChannelsBypassingDndSettings;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index 0641093..ed21b6f 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -34,7 +34,6 @@
import android.print.PrintManager;
import android.print.PrintManager.PrintJobStateChangeListener;
import android.printservice.PrintServiceInfo;
-import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.format.DateUtils;
@@ -56,7 +55,7 @@
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
import java.text.DateFormat;
import java.util.ArrayList;
diff --git a/src/com/android/settings/security/CredentialManagementAppButtonsController.java b/src/com/android/settings/security/CredentialManagementAppButtonsController.java
index 9efa098..c6afded 100644
--- a/src/com/android/settings/security/CredentialManagementAppButtonsController.java
+++ b/src/com/android/settings/security/CredentialManagementAppButtonsController.java
@@ -17,6 +17,7 @@
package com.android.settings.security;
import android.app.AppOpsManager;
+import android.app.admin.DevicePolicyEventLogger;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
@@ -25,6 +26,7 @@
import android.os.RemoteException;
import android.security.IKeyChainService;
import android.security.KeyChain;
+import android.stats.devicepolicy.DevicePolicyEnums;
import android.util.Log;
import androidx.preference.PreferenceScreen;
@@ -98,6 +100,9 @@
try {
IKeyChainService service = KeyChain.bind(mContext).getService();
service.removeCredentialManagementApp();
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REMOVED)
+ .write();
} catch (InterruptedException | RemoteException e) {
Log.e(TAG, "Unable to remove the credential management app");
}
diff --git a/src/com/android/settings/security/RequestManageCredentials.java b/src/com/android/settings/security/RequestManageCredentials.java
index 56fa83d..4ee4fdf 100644
--- a/src/com/android/settings/security/RequestManageCredentials.java
+++ b/src/com/android/settings/security/RequestManageCredentials.java
@@ -18,9 +18,11 @@
import android.annotation.Nullable;
import android.app.Activity;
+import android.app.admin.DevicePolicyEventLogger;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.pm.UserInfo;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
@@ -30,6 +32,7 @@
import android.security.AppUriAuthenticationPolicy;
import android.security.Credentials;
import android.security.KeyChain;
+import android.stats.devicepolicy.DevicePolicyEnums;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
@@ -45,6 +48,8 @@
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
+import java.util.Map;
+
/**
* Displays a full screen to the user asking whether the calling app can manage the user's
* KeyChain credentials. This screen includes the authentication policy highlighting what apps and
@@ -86,21 +91,28 @@
if (!Credentials.ACTION_MANAGE_CREDENTIALS.equals(getIntent().getAction())) {
Log.e(TAG, "Unable to start activity because intent action is not "
+ Credentials.ACTION_MANAGE_CREDENTIALS);
+ logRequestFailure();
finishWithResultCancelled();
return;
}
if (isManagedDevice()) {
Log.e(TAG, "Credential management on managed devices should be done by the Device "
+ "Policy Controller, not a credential management app");
+ logRequestFailure();
finishWithResultCancelled();
return;
}
mCredentialManagerPackage = getLaunchedFromPackage();
if (TextUtils.isEmpty(mCredentialManagerPackage)) {
Log.e(TAG, "Unknown credential manager app");
+ logRequestFailure();
finishWithResultCancelled();
return;
}
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REQUEST_NAME)
+ .setStrings(mCredentialManagerPackage)
+ .write();
setContentView(R.layout.request_manage_credentials);
mKeyChainTread = new HandlerThread("KeyChainConnection");
@@ -111,10 +123,16 @@
getIntent().getParcelableExtra(KeyChain.EXTRA_AUTHENTICATION_POLICY);
if (!isValidAuthenticationPolicy(policy)) {
Log.e(TAG, "Invalid authentication policy");
+ logRequestFailure();
finishWithResultCancelled();
return;
}
mAuthenticationPolicy = policy;
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REQUEST_POLICY)
+ .setStrings(getNumberOfAuthenticationPolicyApps(mAuthenticationPolicy),
+ getNumberOfAuthenticationPolicyUris(mAuthenticationPolicy))
+ .write();
loadRecyclerView();
loadButtons();
@@ -185,6 +203,9 @@
Button allowButton = findViewById(R.id.allow_button);
dontAllowButton.setOnClickListener(b -> {
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REQUEST_DENIED)
+ .write();
finishWithResultCancelled();
});
allowButton.setOnClickListener(b -> setOrUpdateCredentialManagementApp());
@@ -203,8 +224,12 @@
try {
mKeyChainConnection.getService().setCredentialManagementApp(
mCredentialManagerPackage, mAuthenticationPolicy);
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REQUEST_ACCEPTED)
+ .write();
} catch (RemoteException e) {
Log.e(TAG, "Unable to set credential manager app", e);
+ logRequestFailure();
}
finish();
}
@@ -269,4 +294,24 @@
setResult(RESULT_CANCELED);
finish();
}
+
+ private void logRequestFailure() {
+ DevicePolicyEventLogger
+ .createEvent(DevicePolicyEnums.CREDENTIAL_MANAGEMENT_APP_REQUEST_FAILED)
+ .write();
+ }
+
+ private String getNumberOfAuthenticationPolicyUris(AppUriAuthenticationPolicy policy) {
+ int numberOfUris = 0;
+ for (Map.Entry<String, Map<Uri, String>> appsToUris :
+ policy.getAppAndUriMappings().entrySet()) {
+ numberOfUris += appsToUris.getValue().size();
+ }
+ return String.valueOf(numberOfUris);
+ }
+
+ private String getNumberOfAuthenticationPolicyApps(AppUriAuthenticationPolicy policy) {
+ return String.valueOf(policy.getAppAndUriMappings().size());
+ }
+
}
diff --git a/src/com/android/settings/utils/ManagedServiceSettings.java b/src/com/android/settings/utils/ManagedServiceSettings.java
index 86db455..e372cb7 100644
--- a/src/com/android/settings/utils/ManagedServiceSettings.java
+++ b/src/com/android/settings/utils/ManagedServiceSettings.java
@@ -40,9 +40,9 @@
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.widget.AppSwitchPreference;
import com.android.settings.widget.EmptyTextSettings;
import com.android.settingslib.applications.ServiceListing;
+import com.android.settingslib.widget.AppSwitchPreference;
import java.util.List;
diff --git a/src/com/android/settings/widget/AppSwitchPreference.java b/src/com/android/settings/widget/AppSwitchPreference.java
deleted file mode 100644
index aeb779f..0000000
--- a/src/com/android/settings/widget/AppSwitchPreference.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 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.widget;
-
-import android.content.Context;
-import android.view.View;
-
-import androidx.preference.PreferenceViewHolder;
-import androidx.preference.SwitchPreference;
-
-import com.android.settings.R;
-
-public class AppSwitchPreference extends SwitchPreference {
-
- public AppSwitchPreference(Context context) {
- super(context);
- setLayoutResource(R.layout.preference_app);
- }
-
- @Override
- public void onBindViewHolder(PreferenceViewHolder holder) {
- super.onBindViewHolder(holder);
- final View switchView = holder.findViewById(android.R.id.switch_widget);
- if (switchView != null) {
- final View rootView = switchView.getRootView();
- rootView.setFilterTouchesWhenObscured(true);
- }
- }
-}
diff --git a/src/com/android/settings/widget/RestrictedAppPreference.java b/src/com/android/settings/widget/RestrictedAppPreference.java
index 8a2cc91..cd95357 100644
--- a/src/com/android/settings/widget/RestrictedAppPreference.java
+++ b/src/com/android/settings/widget/RestrictedAppPreference.java
@@ -28,7 +28,7 @@
import com.android.settings.R;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreferenceHelper;
-import com.android.settingslib.widget.apppreference.AppPreference;
+import com.android.settingslib.widget.AppPreference;
/**
* {@link AppPreference} that implements user restriction utilities using
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index efc7263..9d7d746 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -48,6 +48,7 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.homepage.HomepagePreference;
import com.android.settings.slices.BlockingSlicePrefController;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.PrimarySwitchPreference;
@@ -55,6 +56,7 @@
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
import com.android.settingslib.drawer.ActivityTile;
+import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.ProviderTile;
@@ -336,6 +338,16 @@
}
@Test
+ public void createPreference_isHomepageTile_returnHomepagePreference() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+ mActivityTile.setCategory(CategoryKey.CATEGORY_HOMEPAGE);
+
+ final Preference pref = mTestFragment.createPreference(mActivityTile);
+
+ assertThat(pref).isInstanceOf(HomepagePreference.class);
+ }
+
+ @Test
public void isFeatureFlagAndIsParalleled_runParalleledUpdatePreferenceStates() {
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONTROLLER_ENHANCEMENT, true);
final TestFragment testFragment = spy(new TestFragment(RuntimeEnvironment.application));
diff --git a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceTest.java b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceTest.java
index 8afff8a..2d76d96 100644
--- a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceTest.java
@@ -41,17 +41,8 @@
}
@Test
- public void constructor_shouldSetTitleAndSummary() {
+ public void constructor_shouldSetTitle() {
assertThat(mPreference.getTitle()).isEqualTo(KEY);
- assertThat(mPreference.getSummary()).isEqualTo("false");
assertThat(mPreference.isChecked()).isFalse();
}
-
- @Test
- public void toggle_shouldUpdateSummary() {
- mPreference.setChecked(true);
-
- assertThat(mPreference.getSummary()).isEqualTo("true");
- assertThat(mPreference.isChecked()).isTrue();
- }
}