Merge "Show Hotspot informations in Network details settings" into main
diff --git a/Android.bp b/Android.bp
index bb5ace8..d34aaac 100644
--- a/Android.bp
+++ b/Android.bp
@@ -74,6 +74,7 @@
"androidx.preference_preference",
"androidx.recyclerview_recyclerview",
"androidx.window_window",
+ "androidx.window_window-java",
"com.google.android.material_material",
"setupcompat",
"setupdesign",
@@ -107,6 +108,7 @@
"Settings-change-ids",
"androidx.room_room-runtime",
"SystemUIUnfoldLib",
+ "aconfig_settings_flags_lib",
],
plugins: [
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 412846c..b0b8ad6 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3287,6 +3287,7 @@
android:name="Settings$DataUsageSummaryActivity"
android:label="@string/data_usage_summary_title"
android:exported="true"
+ android:enabled="@bool/config_show_sim_info"
android:icon="@drawable/ic_homepage_data_usage">
<intent-filter android:priority="1">
<action android:name="android.settings.DATA_USAGE_SETTINGS" />
diff --git a/aconfig/Android.bp b/aconfig/Android.bp
new file mode 100644
index 0000000..05c8d0d
--- /dev/null
+++ b/aconfig/Android.bp
@@ -0,0 +1,18 @@
+package {
+ default_applicable_licenses: ["packages_apps_Settings_license"],
+}
+
+aconfig_declarations {
+ name: "aconfig_settings_flags",
+ package: "com.android.settings.flags",
+ srcs: [
+ "settings_connecteddevice_flag_declarations.aconfig",
+ "settings_localepicker_flag_declarations.aconfig",
+ ],
+}
+
+java_aconfig_library {
+ name: "aconfig_settings_flags_lib",
+ aconfig_declarations: "aconfig_settings_flags",
+}
+
diff --git a/aconfig/settings_connecteddevice_flag_declarations.aconfig b/aconfig/settings_connecteddevice_flag_declarations.aconfig
new file mode 100644
index 0000000..db42fff
--- /dev/null
+++ b/aconfig/settings_connecteddevice_flag_declarations.aconfig
@@ -0,0 +1,8 @@
+package: "com.android.settings.flags"
+
+flag {
+ name: "enable_subsequent_pair_settings_integration"
+ namespace: "pixel_cross_device_control"
+ description: "Gates whether to enable subsequent pair Settings integration."
+ bug: "296507968"
+}
diff --git a/aconfig/settings_localepicker_flag_declarations.aconfig b/aconfig/settings_localepicker_flag_declarations.aconfig
new file mode 100644
index 0000000..6d7a117
--- /dev/null
+++ b/aconfig/settings_localepicker_flag_declarations.aconfig
@@ -0,0 +1,8 @@
+package: "com.android.settings.flags"
+
+flag {
+ name: "terms_of_address_enabled"
+ namespace: "settings_localepicker"
+ description: "Feature flag for Terms of Address"
+ bug: "297798866"
+}
diff --git a/res/xml/shortcuts.xml b/res/xml/shortcuts.xml
index afb2104..058d22e 100644
--- a/res/xml/shortcuts.xml
+++ b/res/xml/shortcuts.xml
@@ -24,6 +24,7 @@
<shortcut
android:shortcutId="manifest-shortcut-data-usage"
android:icon="@drawable/ic_shortcut_data_usage"
+ android:enabled="@bool/config_show_sim_info"
android:shortcutShortLabel="@string/data_usage_summary_title">
<intent
android:action="android.intent.action.MAIN"
diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java
index c14c01b..1645586 100644
--- a/src/com/android/settings/datausage/AppDataUsage.java
+++ b/src/com/android/settings/datausage/AppDataUsage.java
@@ -34,6 +34,8 @@
import android.view.View;
import android.widget.AdapterView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
@@ -57,6 +59,7 @@
import com.android.settingslib.net.UidDetailProvider;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceChangeListener,
@@ -97,6 +100,7 @@
String mPackageName;
private CycleAdapter mCycleAdapter;
+ @Nullable
private List<NetworkCycleDataForUid> mUsageData;
@VisibleForTesting
NetworkTemplate mTemplate;
@@ -261,7 +265,7 @@
}
@Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
+ public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) {
if (preference == mRestrictBackground) {
mDataSaverBackend.setIsDenylisted(mAppItem.key, mPackageName, !(Boolean) newValue);
updatePrefs();
@@ -361,9 +365,7 @@
}
String[] packages = mPackageManager.getPackagesForUid(uid);
if (packages != null) {
- for (int i = 0; i < packages.length; i++) {
- mPackages.add(packages[i]);
- }
+ Collections.addAll(mPackages, packages);
}
}
@@ -448,73 +450,75 @@
@VisibleForTesting
final LoaderManager.LoaderCallbacks<List<NetworkCycleDataForUid>> mUidDataCallbacks =
- new LoaderManager.LoaderCallbacks<List<NetworkCycleDataForUid>>() {
- @Override
- public Loader<List<NetworkCycleDataForUid>> onCreateLoader(int id, Bundle args) {
- final NetworkCycleDataForUidLoader.Builder builder
- = NetworkCycleDataForUidLoader.builder(mContext);
- builder.setRetrieveDetail(true)
- .setNetworkTemplate(mTemplate);
- for (int i = 0; i < mAppItem.uids.size(); i++) {
- builder.addUid(mAppItem.uids.keyAt(i));
+ new LoaderManager.LoaderCallbacks<>() {
+ @Override
+ @NonNull
+ public Loader<List<NetworkCycleDataForUid>> onCreateLoader(int id, Bundle args) {
+ final NetworkCycleDataForUidLoader.Builder<?> builder =
+ NetworkCycleDataForUidLoader.builder(mContext);
+ builder.setRetrieveDetail(true)
+ .setNetworkTemplate(mTemplate);
+ for (int i = 0; i < mAppItem.uids.size(); i++) {
+ builder.addUid(mAppItem.uids.keyAt(i));
+ }
+ if (mCycles != null) {
+ builder.setCycles(mCycles);
+ }
+ return builder.build();
}
- if (mCycles != null) {
- builder.setCycles(mCycles);
- }
- return builder.build();
- }
- @Override
- public void onLoadFinished(Loader<List<NetworkCycleDataForUid>> loader,
- List<NetworkCycleDataForUid> data) {
- mUsageData = data;
- mCycleAdapter.updateCycleList(data);
- if (mSelectedCycle > 0L) {
- final int numCycles = data.size();
- int position = 0;
- for (int i = 0; i < numCycles; i++) {
- final NetworkCycleDataForUid cycleData = data.get(i);
- if (cycleData.getEndTime() == mSelectedCycle) {
- position = i;
- break;
+ @Override
+ public void onLoadFinished(@NonNull Loader<List<NetworkCycleDataForUid>> loader,
+ List<NetworkCycleDataForUid> data) {
+ mUsageData = data;
+ mCycleAdapter.updateCycleList(data);
+ if (mSelectedCycle > 0L) {
+ final int numCycles = data.size();
+ int position = 0;
+ for (int i = 0; i < numCycles; i++) {
+ final NetworkCycleDataForUid cycleData = data.get(i);
+ if (cycleData.getEndTime() == mSelectedCycle) {
+ position = i;
+ break;
+ }
}
+ if (position > 0) {
+ mCycle.setSelection(position);
+ }
+ bindData(position);
+ } else {
+ bindData(0 /* position */);
}
- if (position > 0) {
- mCycle.setSelection(position);
- }
- bindData(position);
- } else {
- bindData(0 /* position */);
+ mIsLoading = false;
}
- mIsLoading = false;
- }
- @Override
- public void onLoaderReset(Loader<List<NetworkCycleDataForUid>> loader) {
- }
- };
+ @Override
+ public void onLoaderReset(@NonNull Loader<List<NetworkCycleDataForUid>> loader) {
+ }
+ };
private final LoaderManager.LoaderCallbacks<ArraySet<Preference>> mAppPrefCallbacks =
- new LoaderManager.LoaderCallbacks<ArraySet<Preference>>() {
- @Override
- public Loader<ArraySet<Preference>> onCreateLoader(int i, Bundle bundle) {
- return new AppPrefLoader(getPrefContext(), mPackages, getPackageManager());
- }
+ new LoaderManager.LoaderCallbacks<>() {
+ @Override
+ @NonNull
+ public Loader<ArraySet<Preference>> onCreateLoader(int i, Bundle bundle) {
+ return new AppPrefLoader(getPrefContext(), mPackages, getPackageManager());
+ }
- @Override
- public void onLoadFinished(Loader<ArraySet<Preference>> loader,
- ArraySet<Preference> preferences) {
- if (preferences != null && mAppList != null) {
- for (Preference preference : preferences) {
- mAppList.addPreference(preference);
+ @Override
+ public void onLoadFinished(@NonNull Loader<ArraySet<Preference>> loader,
+ ArraySet<Preference> preferences) {
+ if (preferences != null && mAppList != null) {
+ for (Preference preference : preferences) {
+ mAppList.addPreference(preference);
+ }
}
}
- }
- @Override
- public void onLoaderReset(Loader<ArraySet<Preference>> loader) {
- }
- };
+ @Override
+ public void onLoaderReset(@NonNull Loader<ArraySet<Preference>> loader) {
+ }
+ };
@Override
public void onDataSaverChanged(boolean isDataSaving) {
diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index ee2a1ad..5c52797 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -48,6 +48,8 @@
import android.widget.ImageView;
import android.widget.Spinner;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.Lifecycle;
import androidx.loader.app.LoaderManager.LoaderCallbacks;
@@ -118,7 +120,10 @@
LoadingViewController mLoadingViewController;
private ChartDataUsagePreference mChart;
+
+ @Nullable
private List<NetworkCycleChartData> mCycleData;
+
// Caches the cycles for startAppDataUsage usage, which need be cleared when resumed.
private ArrayList<Long> mCycles;
// Spinner will keep the selected cycle even after paused, this only keeps the displayed cycle,
@@ -165,7 +170,7 @@
}
@Override
- public void onViewCreated(View v, Bundle savedInstanceState) {
+ public void onViewCreated(@NonNull View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
mHeader = setPinnedHeaderView(R.layout.apps_filter_spinner);
@@ -355,7 +360,9 @@
}
// generate cycle list based on policy and available history
- mCycleAdapter.updateCycleList(mCycleData);
+ if (mCycleData != null) {
+ mCycleAdapter.updateCycleList(mCycleData);
+ }
updateSelectedCycle();
}
@@ -481,11 +488,9 @@
}
stats.close();
- final int restrictedUidsMax = restrictedUids.length;
- for (int i = 0; i < restrictedUidsMax; ++i) {
- final int uid = restrictedUids[i];
+ for (final int uid : restrictedUids) {
// Only splice in restricted state for current user or managed users
- if (!profiles.contains(new UserHandle(UserHandle.getUserId(uid)))) {
+ if (!profiles.contains(UserHandle.getUserHandleForUid(uid))) {
continue;
}
@@ -505,14 +510,13 @@
R.array.datausage_hiding_carrier_service_package_names));
// When there is no specified SubscriptionInfo, Wi-Fi data usage will be displayed.
// In this case, the carrier service package also needs to be hidden.
- boolean shouldHidePackageName = mSubscriptionInfoEntity != null
- ? Arrays.stream(getContext().getResources().getIntArray(
+ boolean shouldHidePackageName = mSubscriptionInfoEntity == null
+ || Arrays.stream(getContext().getResources().getIntArray(
R.array.datausage_hiding_carrier_service_carrier_id))
- .anyMatch(carrierId -> (carrierId == mSubscriptionInfoEntity.carrierId))
- : true;
+ .anyMatch(carrierId -> (carrierId == mSubscriptionInfoEntity.carrierId));
- for (int i = 0; i < items.size(); i++) {
- UidDetail detail = mUidDetailProvider.getUidDetail(items.get(i).key, true);
+ for (var item : items) {
+ UidDetail detail = mUidDetailProvider.getUidDetail(item.key, true);
// Do not show carrier service package in data usage list if it should be hidden for
// the carrier.
if (detail != null && shouldHidePackageName && packageNames.contains(
@@ -520,17 +524,13 @@
continue;
}
- final int percentTotal = largest != 0 ? (int) (items.get(i).total * 100 / largest) : 0;
+ final int percentTotal = largest != 0 ? (int) (item.total * 100 / largest) : 0;
final AppDataUsagePreference preference = new AppDataUsagePreference(getContext(),
- items.get(i), percentTotal, mUidDetailProvider);
- preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- AppDataUsagePreference pref = (AppDataUsagePreference) preference;
- AppItem item = pref.getItem();
- startAppDataUsage(item);
- return true;
- }
+ item, percentTotal, mUidDetailProvider);
+ preference.setOnPreferenceClickListener(p -> {
+ AppDataUsagePreference pref = (AppDataUsagePreference) p;
+ startAppDataUsage(pref.getItem());
+ return true;
});
mApps.addPreference(preference);
}
@@ -538,6 +538,9 @@
@VisibleForTesting
void startAppDataUsage(AppItem item) {
+ if (mCycleData == null) {
+ return;
+ }
final Bundle args = new Bundle();
args.putParcelable(AppDataUsage.ARG_APP_ITEM, item);
args.putParcelable(AppDataUsage.ARG_NETWORK_TEMPLATE, mTemplate);
@@ -600,67 +603,70 @@
@VisibleForTesting
final LoaderCallbacks<List<NetworkCycleChartData>> mNetworkCycleDataCallbacks =
- new LoaderCallbacks<List<NetworkCycleChartData>>() {
- @Override
- public Loader<List<NetworkCycleChartData>> onCreateLoader(int id, Bundle args) {
- return NetworkCycleChartDataLoader.builder(getContext())
- .setNetworkTemplate(mTemplate)
- .build();
- }
+ new LoaderCallbacks<>() {
+ @Override
+ @NonNull
+ public Loader<List<NetworkCycleChartData>> onCreateLoader(int id, Bundle args) {
+ return NetworkCycleChartDataLoader.builder(getContext())
+ .setNetworkTemplate(mTemplate)
+ .build();
+ }
- @Override
- public void onLoadFinished(Loader<List<NetworkCycleChartData>> loader,
- List<NetworkCycleChartData> data) {
- mLoadingViewController.showContent(false /* animate */);
- mCycleData = data;
- // calculate policy cycles based on available data
- updatePolicy();
- mCycleSpinner.setVisibility(View.VISIBLE);
- }
+ @Override
+ public void onLoadFinished(@NonNull Loader<List<NetworkCycleChartData>> loader,
+ List<NetworkCycleChartData> data) {
+ mLoadingViewController.showContent(false /* animate */);
+ mCycleData = data;
+ // calculate policy cycles based on available data
+ updatePolicy();
+ mCycleSpinner.setVisibility(View.VISIBLE);
+ }
- @Override
- public void onLoaderReset(Loader<List<NetworkCycleChartData>> loader) {
- mCycleData = null;
- }
- };
+ @Override
+ public void onLoaderReset(@NonNull Loader<List<NetworkCycleChartData>> loader) {
+ mCycleData = null;
+ }
+ };
private final LoaderCallbacks<NetworkStats> mNetworkStatsDetailCallbacks =
- new LoaderCallbacks<NetworkStats>() {
- @Override
- public Loader<NetworkStats> onCreateLoader(int id, Bundle args) {
- return new NetworkStatsSummaryLoader.Builder(getContext())
- .setStartTime(mChart.getInspectStart())
- .setEndTime(mChart.getInspectEnd())
- .setNetworkTemplate(mTemplate)
- .build();
- }
-
- @Override
- public void onLoadFinished(Loader<NetworkStats> loader, NetworkStats data) {
- final int[] restrictedUids = services.mPolicyManager.getUidsWithPolicy(
- POLICY_REJECT_METERED_BACKGROUND);
- bindStats(data, restrictedUids);
- updateEmptyVisible();
- }
-
- @Override
- public void onLoaderReset(Loader<NetworkStats> loader) {
- bindStats(null, new int[0]);
- updateEmptyVisible();
- }
-
- private void updateEmptyVisible() {
- if ((mApps.getPreferenceCount() != 0) !=
- (getPreferenceScreen().getPreferenceCount() != 0)) {
- if (mApps.getPreferenceCount() != 0) {
- getPreferenceScreen().addPreference(mUsageAmount);
- getPreferenceScreen().addPreference(mApps);
- } else {
- getPreferenceScreen().removeAll();
+ new LoaderCallbacks<>() {
+ @Override
+ @NonNull
+ public Loader<NetworkStats> onCreateLoader(int id, Bundle args) {
+ return new NetworkStatsSummaryLoader.Builder(getContext())
+ .setStartTime(mChart.getInspectStart())
+ .setEndTime(mChart.getInspectEnd())
+ .setNetworkTemplate(mTemplate)
+ .build();
}
- }
- }
- };
+
+ @Override
+ public void onLoadFinished(
+ @NonNull Loader<NetworkStats> loader, NetworkStats data) {
+ final int[] restrictedUids = services.mPolicyManager.getUidsWithPolicy(
+ POLICY_REJECT_METERED_BACKGROUND);
+ bindStats(data, restrictedUids);
+ updateEmptyVisible();
+ }
+
+ @Override
+ public void onLoaderReset(@NonNull Loader<NetworkStats> loader) {
+ bindStats(null, new int[0]);
+ updateEmptyVisible();
+ }
+
+ private void updateEmptyVisible() {
+ if ((mApps.getPreferenceCount() != 0)
+ != (getPreferenceScreen().getPreferenceCount() != 0)) {
+ if (mApps.getPreferenceCount() != 0) {
+ getPreferenceScreen().addPreference(mUsageAmount);
+ getPreferenceScreen().addPreference(mApps);
+ } else {
+ getPreferenceScreen().removeAll();
+ }
+ }
+ }
+ };
private static boolean isGuestUser(Context context) {
if (context == null) return false;
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 533fbe7..d96ec39 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -50,6 +50,7 @@
import androidx.annotation.VisibleForTesting;
import androidx.core.graphics.Insets;
+import androidx.core.util.Consumer;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -57,7 +58,10 @@
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import androidx.window.embedding.SplitController;
+import androidx.window.embedding.SplitInfo;
import androidx.window.embedding.SplitRule;
+import androidx.window.java.embedding.SplitControllerCallbackAdapter;
import com.android.settings.R;
import com.android.settings.Settings;
@@ -77,6 +81,7 @@
import com.google.android.setupcompat.util.WizardManagerHelper;
import java.net.URISyntaxException;
+import java.util.List;
import java.util.Set;
/** Settings homepage activity */
@@ -112,6 +117,9 @@
// A regular layout shows icons on homepage, whereas a simplified layout doesn't.
private boolean mIsRegularLayout = true;
+ private SplitControllerCallbackAdapter mSplitControllerAdapter;
+ private SplitInfoCallback mCallback;
+
/** A listener receiving homepage loaded events. */
public interface HomepageLoadedListener {
/** Called when the homepage is loaded. */
@@ -259,6 +267,22 @@
protected void onStart() {
((SettingsApplication) getApplication()).setHomeActivity(this);
super.onStart();
+ if (mIsEmbeddingActivityEnabled) {
+ final SplitController splitController = SplitController.getInstance(this);
+ mSplitControllerAdapter = new SplitControllerCallbackAdapter(splitController);
+ mCallback = new SplitInfoCallback(this);
+ mSplitControllerAdapter.addSplitListener(this, Runnable::run, mCallback);
+ }
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ if (mSplitControllerAdapter != null && mCallback != null) {
+ mSplitControllerAdapter.removeSplitListener(mCallback);
+ mCallback = null;
+ mSplitControllerAdapter = null;
+ }
}
@Override
@@ -281,21 +305,13 @@
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- final boolean newTwoPaneState = ActivityEmbeddingUtils.isAlreadyEmbedded(this);
- if (mIsTwoPane != newTwoPaneState) {
- mIsTwoPane = newTwoPaneState;
- updateHomepageAppBar();
- updateHomepageBackground();
- updateHomepagePaddings();
- }
- updateSplitLayout();
+ updateHomepageUI();
}
private void updateSplitLayout() {
if (!mIsEmbeddingActivityEnabled) {
return;
}
-
if (mIsTwoPane) {
if (mIsRegularLayout == ActivityEmbeddingUtils.isRegularHomepageLayout(this)) {
// Layout unchanged
@@ -365,6 +381,17 @@
}
}
+ private void updateHomepageUI() {
+ final boolean newTwoPaneState = ActivityEmbeddingUtils.isAlreadyEmbedded(this);
+ if (mIsTwoPane != newTwoPaneState) {
+ mIsTwoPane = newTwoPaneState;
+ updateHomepageAppBar();
+ updateHomepageBackground();
+ updateHomepagePaddings();
+ }
+ updateSplitLayout();
+ }
+
private void updateHomepageBackground() {
if (!mIsEmbeddingActivityEnabled) {
return;
@@ -733,4 +760,24 @@
}
}
}
+
+ /** The callback invoked while AE splitting. */
+ private static class SplitInfoCallback implements Consumer<List<SplitInfo>> {
+ private final SettingsHomepageActivity mActivity;
+
+ private boolean mIsSplitUpdatedUI = false;
+
+ SplitInfoCallback(SettingsHomepageActivity activity) {
+ mActivity = activity;
+ }
+
+ @Override
+ public void accept(List<SplitInfo> splitInfoList) {
+ if (!splitInfoList.isEmpty() && !mIsSplitUpdatedUI && !mActivity.isFinishing()
+ && ActivityEmbeddingUtils.isAlreadyEmbedded(mActivity)) {
+ mIsSplitUpdatedUI = true;
+ mActivity.updateHomepageUI();
+ }
+ }
+ }
}
diff --git a/src/com/android/settings/media/MediaOutputIndicatorWorker.java b/src/com/android/settings/media/MediaOutputIndicatorWorker.java
index 7c299c6..6e56153 100644
--- a/src/com/android/settings/media/MediaOutputIndicatorWorker.java
+++ b/src/com/android/settings/media/MediaOutputIndicatorWorker.java
@@ -171,12 +171,20 @@
/** Check if this device supports LE Audio Broadcast feature */
public boolean isBroadcastSupported() {
+ if (mLocalBluetoothManager == null) {
+ Log.e(TAG, "isBroadcastSupported: Bluetooth is not supported on this device");
+ return false;
+ }
LocalBluetoothLeBroadcast broadcast =
mLocalBluetoothManager.getProfileManager().getLeAudioBroadcastProfile();
return broadcast != null ? true : false;
}
public boolean isDeviceBroadcasting() {
+ if (mLocalBluetoothManager == null) {
+ Log.e(TAG, "isDeviceBroadcasting: Bluetooth is not supported on this device");
+ return false;
+ }
LocalBluetoothLeBroadcast broadcast =
mLocalBluetoothManager.getProfileManager().getLeAudioBroadcastProfile();
if (broadcast == null) {
diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
index e3e83dc..400d261 100644
--- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.settings.network.telephony.gsm;
+import static androidx.lifecycle.Lifecycle.Event.ON_RESUME;
import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
@@ -36,10 +37,11 @@
import android.telephony.TelephonyManager;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.Lifecycle;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.OnLifecycleEvent;
+import androidx.lifecycle.LifecycleEventObserver;
+import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
@@ -63,10 +65,10 @@
* Preference controller for "Auto Select Network"
*/
public class AutoSelectPreferenceController extends TelephonyTogglePreferenceController
- implements LifecycleObserver{
+ implements LifecycleEventObserver{
private static final long MINIMUM_DIALOG_TIME_MILLIS = TimeUnit.SECONDS.toMillis(1);
private static final String LOG_TAG = "AutoSelectPreferenceController";
- private static final String INTERNAL_LOG_TAG_INIT = "Init";
+ private static final String INTERNAL_LOG_TAG_ONRESUME = "OnResume";
private static final String INTERNAL_LOG_TAG_AFTERSET = "AfterSet";
private final Handler mUiHandler;
@@ -110,14 +112,37 @@
}
}
- @OnLifecycleEvent(ON_START)
- public void onStart() {
- mAllowedNetworkTypesListener.register(mContext, mSubId);
- }
-
- @OnLifecycleEvent(ON_STOP)
- public void onStop() {
- mAllowedNetworkTypesListener.unregister(mContext, mSubId);
+ /**
+ * Implementation of LifecycleEventObserver.
+ */
+ @SuppressWarnings("FutureReturnValueIgnored")
+ public void onStateChanged(@NonNull LifecycleOwner lifecycleOwner,
+ @NonNull Lifecycle.Event event) {
+ switch (event) {
+ case ON_START:
+ mAllowedNetworkTypesListener.register(mContext, mSubId);
+ break;
+ case ON_RESUME:
+ ThreadUtils.postOnBackgroundThread(() -> {
+ queryNetworkSelectionMode(INTERNAL_LOG_TAG_ONRESUME);
+ //Update UI in UI thread
+ mUiHandler.post(() -> {
+ if (mSwitchPreference != null) {
+ mRecursiveUpdate.getAndIncrement();
+ mSwitchPreference.setChecked(isChecked());
+ mRecursiveUpdate.decrementAndGet();
+ updateListenerValue();
+ }
+ });
+ });
+ break;
+ case ON_STOP:
+ mAllowedNetworkTypesListener.unregister(mContext, mSubId);
+ break;
+ default:
+ // Do nothing
+ break;
+ }
}
@Override
@@ -243,19 +268,6 @@
updateUiAutoSelectValue(status);
}
};
-
- ThreadUtils.postOnBackgroundThread(() -> {
- queryNetworkSelectionMode(INTERNAL_LOG_TAG_INIT);
- //Update UI in UI thread
- mUiHandler.post(() -> {
- if (mSwitchPreference != null) {
- mRecursiveUpdate.getAndIncrement();
- mSwitchPreference.setChecked(isChecked());
- mRecursiveUpdate.decrementAndGet();
- updateListenerValue();
- }
- });
- });
return this;
}
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java
index cd06bae..444fa1e 100644
--- a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java
@@ -313,4 +313,18 @@
assertThat(mMediaOutputIndicatorWorker.isBroadcastSupported()).isTrue();
}
+
+ @Test
+ public void isBroadcastSupported_noLocalMediaManager_returnFalse() {
+ mMediaOutputIndicatorWorker.mLocalMediaManager = null;
+
+ assertThat(mMediaOutputIndicatorWorker.isBroadcastSupported()).isFalse();
+ }
+
+ @Test
+ public void isDeviceBroadcasting_noLocalMediaManager_returnFalse() {
+ mMediaOutputIndicatorWorker.mLocalMediaManager = null;
+
+ assertThat(mMediaOutputIndicatorWorker.isDeviceBroadcasting()).isFalse();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java
index fc90372..c8cf290 100644
--- a/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java
@@ -235,8 +235,7 @@
mPreferenceController.getDefaultNASIntent();
mPreferenceController.updateState(mPreference);
- verify(mPreference, times(1)).setSwitchEnabled(eq(false));
+ verify(mPreference).setSwitchEnabled(eq(false));
assertFalse(mPreference.isEnabled());
}
-
}
diff --git a/tests/spa_unit/src/com/android/settings/datausage/lib/DataUsageLibTest.kt b/tests/spa_unit/src/com/android/settings/datausage/lib/DataUsageLibTest.kt
index 5922fac..18af600 100644
--- a/tests/spa_unit/src/com/android/settings/datausage/lib/DataUsageLibTest.kt
+++ b/tests/spa_unit/src/com/android/settings/datausage/lib/DataUsageLibTest.kt
@@ -26,6 +26,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
import org.junit.Before
+import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -86,6 +87,7 @@
}
@Test
+ @Ignore("b/297923588")
fun getMobileTemplate_mergedImsisFromGroupNull_returnRequestedSub() {
whenever(subscriptionManager.availableSubscriptionInfoList)
.thenReturn(listOf(SUBSCRIBER_INFO))
@@ -168,4 +170,4 @@
const val SUBSCRIBER_ID = "Test Subscriber"
val SUBSCRIBER_INFO: SubscriptionInfo = SubscriptionInfo.Builder().setId(SUB_ID).build()
}
-}
\ No newline at end of file
+}