Merge "[Provider Model] Show carrier network to internet preference" into sc-dev
diff --git a/res/drawable/ic_lock_pin.xml b/res/drawable/ic_lock_pin.xml
index e1821f6..587f49c 100644
--- a/res/drawable/ic_lock_pin.xml
+++ b/res/drawable/ic_lock_pin.xml
@@ -21,5 +21,5 @@
android:viewportHeight="24">
<path
android:pathData="M6,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM6,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM6,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM16,6c0,1.1 0.9,2 2,2s2,-0.9 2,-2 -0.9,-2 -2,-2 -2,0.9 -2,2zM12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2z"
- android:fillColor="?attr/sudListItemIconColor"/>
+ android:fillColor="?android:attr/colorAccent"/>
</vector>
diff --git a/res/layout/manage_applications_apps.xml b/res/layout/manage_applications_apps.xml
index d814164..055e4b4 100644
--- a/res/layout/manage_applications_apps.xml
+++ b/res/layout/manage_applications_apps.xml
@@ -14,7 +14,7 @@
limitations under the License.
-->
-<FrameLayout
+<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
@@ -24,40 +24,39 @@
android:id="@+id/pinned_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:elevation="2dp"/>
+ android:elevation="2dp"
+ settings:layout_constraintTop_toTopOf="parent"/>
- <FrameLayout
- android:id="@+id/list_container"
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/apps_list"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone">
+ android:layout_height="0dp"
+ android:clipToPadding="false"
+ android:scrollbars="none"
+ android:visibility="invisible"
+ settings:fastScrollEnabled="true"
+ settings:fastScrollHorizontalThumbDrawable="@drawable/thumb_drawable"
+ settings:fastScrollHorizontalTrackDrawable="@drawable/line_drawable"
+ settings:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
+ settings:fastScrollVerticalTrackDrawable="@drawable/line_drawable"
+ settings:layout_constraintTop_toBottomOf="@id/pinned_header"
+ settings:layout_constraintBottom_toBottomOf="parent"/>
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/apps_list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:clipToPadding="false"
- android:scrollbars="none"
- settings:fastScrollEnabled="true"
- settings:fastScrollHorizontalThumbDrawable="@drawable/thumb_drawable"
- settings:fastScrollHorizontalTrackDrawable="@drawable/line_drawable"
- settings:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
- settings:fastScrollVerticalTrackDrawable="@drawable/line_drawable"/>
+ <TextView
+ android:id="@android:id/empty"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:gravity="center"
+ android:text="@string/no_applications"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:visibility="invisible"
+ settings:layout_constraintTop_toTopOf="parent"
+ settings:layout_constraintBottom_toBottomOf="parent"/>
- <TextView
- android:id="@android:id/empty"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="bottom|center_horizontal"
- android:layout_gravity="center"
- android:text="@string/no_applications"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:visibility="invisible"/>
+ <include layout="@layout/loading_container"
+ settings:layout_constraintTop_toBottomOf="@id/pinned_header"
+ settings:layout_constraintBottom_toBottomOf="parent"/>
- </FrameLayout>
-
- <include layout="@layout/loading_container"/>
-
-</FrameLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index f3030c1..f3b8a91 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -149,8 +149,6 @@
<dimen name="wifi_assistant_height">182dp</dimen>
<dimen name="wifi_assistant_image_top">32dp</dimen>
<dimen name="wifi_assistant_image_start">24dp</dimen>
- <!-- appbar height is equal search bar height (48dp) plus search bar top and bottom margin -->
- <dimen name="app_bar_height">80dp</dimen>
<!-- CryptKeeper top margin for password/pin screen -->
<dimen name="crypt_keeper_password_top_margin">88dip</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c19c8dc..f837d6b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8204,7 +8204,7 @@
<string name="keywords_wifi_calling">wifi, wi-fi, call, calling</string>
<string name="keywords_display">screen, touchscreen</string>
<string name="keywords_display_brightness_level">dim screen, touchscreen, battery, bright</string>
- <string name="keywords_display_night_display">dim screen, night, tint, night shift, brightness, screen color, colour, color, light sensitivity, photophobia, make darker, darken, dark mode, migraine</string>
+ <string name="keywords_display_night_display">dim screen, night, tint, night shift, brightness, screen color, colour, color</string>
<string name="keywords_display_wallpaper">background, personalize, customize display</string>
<string name="keywords_display_font_size">text size</string>
<!-- Search keyword for "Cast" settings [CHAR_LIMIT=NONE]-->
@@ -8252,7 +8252,7 @@
<string name="keywords_model_and_hardware">serial number, hardware version</string>
<string name="keywords_android_version">android security patch level, baseband version, kernel version</string>
<!-- Search keywords for dark mode settings [CHAR LIMIT=NONE] -->
- <string name="keywords_dark_ui_mode">theme, light, dark, mode</string>
+ <string name="keywords_dark_ui_mode">theme, light, dark, mode, light sensitivity, photophobia, make darker, darken, dark mode, migraine</string>
<!-- Search keyword for Device Theme Settings [CHAR LIMIT=NONE] -->
<string name="keywords_systemui_theme">dark theme</string>
@@ -12353,6 +12353,15 @@
<!-- Title for preference showing the name of the device. [CHAR LIMIT=60]-->
<string name="my_device_info_device_name_preference_title">Device name</string>
+ <!-- Title for preference category showing the name of basic info. [CHAR LIMIT=60]-->
+ <string name="my_device_info_basic_info_category_title">Basic info</string>
+ <!-- Title for preference category showing the name of legal & regulatory. [CHAR LIMIT=60]-->
+ <string name="my_device_info_legal_category_title">Legal & regulatory</string>
+ <!-- Title for preference category showing the name of device details. [CHAR LIMIT=60]-->
+ <string name="my_device_info_device_details_category_title">Device details</string>
+ <!-- Title for preference category showing the name of device identifiers. [CHAR LIMIT=60]-->
+ <string name="my_device_info_device_identifiers_category_title">Device identifiers</string>
+
<!-- Title for Wifi Access settings [CHAR LIMIT=35] -->
<string name="change_wifi_state_title">Wi-Fi control</string>
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index 5077f77..a415abf 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -28,173 +28,185 @@
android:selectable="false"
settings:isPreferenceVisible="false"/>
- <!-- Device name -->
- <com.android.settings.widget.ValidatedEditTextPreference
- android:key="device_name"
- android:order="1"
- android:title="@string/my_device_info_device_name_preference_title"
- android:summary="@string/summary_placeholder"
- settings:controller="com.android.settings.deviceinfo.DeviceNamePreferenceController"
- settings:enableCopying="true"/>
+ <PreferenceCategory
+ android:title="@string/my_device_info_basic_info_category_title">
- <!-- Account name -->
- <Preference
- android:key="branded_account"
- android:order="2"
- android:title="@string/my_device_info_account_preference_title"
- android:summary="@string/summary_placeholder"
- settings:enableCopying="true"
- settings:controller="com.android.settings.deviceinfo.BrandedAccountPreferenceController"/>
+ <!-- Device name -->
+ <com.android.settings.widget.ValidatedEditTextPreference
+ android:key="device_name"
+ android:order="1"
+ android:title="@string/my_device_info_device_name_preference_title"
+ android:summary="@string/summary_placeholder"
+ settings:controller="com.android.settings.deviceinfo.DeviceNamePreferenceController"
+ settings:enableCopying="true"/>
- <!-- Phone number -->
- <Preference
- android:key="phone_number"
- android:order="3"
- android:title="@string/status_number"
- android:summary="@string/summary_placeholder"
- android:selectable="false"
- settings:controller="com.android.settings.deviceinfo.PhoneNumberPreferenceController"
- settings:enableCopying="true"/>
+ <!-- Account name -->
+ <Preference
+ android:key="branded_account"
+ android:order="2"
+ android:title="@string/my_device_info_account_preference_title"
+ android:summary="@string/summary_placeholder"
+ settings:enableCopying="true"
+ settings:controller="com.android.settings.deviceinfo.BrandedAccountPreferenceController"/>
- <!-- Legal information -->
- <Preference
- android:key="legal_container"
- android:order="15"
- android:title="@string/legal_information"
- android:fragment="com.android.settings.LegalSettings"
- settings:allowDividerAbove="true"/>
+ <!-- Phone number -->
+ <Preference
+ android:key="phone_number"
+ android:order="3"
+ android:title="@string/status_number"
+ android:summary="@string/summary_placeholder"
+ android:selectable="false"
+ settings:controller="com.android.settings.deviceinfo.PhoneNumberPreferenceController"
+ settings:enableCopying="true"/>
+ </PreferenceCategory>
- <!-- Regulatory labels -->
- <Preference
- android:key="regulatory_info"
- android:order="16"
- android:title="@string/regulatory_labels">
- <intent android:action="android.settings.SHOW_REGULATORY_INFO"/>
- </Preference>
+ <PreferenceCategory
+ android:title="@string/my_device_info_legal_category_title">
- <!-- Safety & regulatory manual -->
- <Preference
- android:key="safety_info"
- android:order="17"
- android:title="@string/safety_and_regulatory_info">
- <intent android:action="android.settings.SHOW_SAFETY_AND_REGULATORY_INFO"/>
- </Preference>
+ <!-- Legal information -->
+ <Preference
+ android:key="legal_container"
+ android:order="15"
+ android:title="@string/legal_information"
+ android:fragment="com.android.settings.LegalSettings"/>
- <!-- SIM status -->
- <Preference
- android:key="sim_status"
- android:order="18"
- android:title="@string/sim_status_title"
- settings:keywords="@string/keywords_sim_status"
- android:summary="@string/summary_placeholder"
- settings:enableCopying="true"
- settings:allowDividerAbove="true"/>
+ <!-- Regulatory labels -->
+ <Preference
+ android:key="regulatory_info"
+ android:order="16"
+ android:title="@string/regulatory_labels">
+ <intent android:action="android.settings.SHOW_REGULATORY_INFO"/>
+ </Preference>
- <!-- Model & hardware -->
- <Preference
- android:key="device_model"
- android:order="31"
- android:title="@string/model_info"
- android:summary="@string/summary_placeholder"
- android:fragment="com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFragment"
- settings:enableCopying="true"
- settings:keywords="@string/keywords_model_and_hardware"
- settings:controller="com.android.settings.deviceinfo.HardwareInfoPreferenceController"/>
+ <!-- Safety & regulatory manual -->
+ <Preference
+ android:key="safety_info"
+ android:order="17"
+ android:title="@string/safety_and_regulatory_info">
+ <intent android:action="android.settings.SHOW_SAFETY_AND_REGULATORY_INFO"/>
+ </Preference>
+ </PreferenceCategory>
- <!-- IMEI -->
- <Preference
- android:key="imei_info"
- android:order="32"
- android:title="@string/status_imei"
- android:summary="@string/summary_placeholder"
- settings:keywords="@string/keywords_imei_info"
- settings:enableCopying="true"
- settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/>
+ <PreferenceCategory
+ android:title="@string/my_device_info_device_details_category_title">
- <!-- Android version -->
- <Preference
- android:key="firmware_version"
- android:order="42"
- android:title="@string/firmware_version"
- android:summary="@string/summary_placeholder"
- android:fragment="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionSettings"
- settings:controller="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController"/>
+ <!-- SIM status -->
+ <Preference
+ android:key="sim_status"
+ android:order="18"
+ android:title="@string/sim_status_title"
+ settings:keywords="@string/keywords_sim_status"
+ android:summary="@string/summary_placeholder"
+ settings:enableCopying="true"/>
- <!--IP address -->
- <Preference
- android:key="wifi_ip_address"
- android:order="44"
- android:title="@string/wifi_ip_address"
- android:summary="@string/summary_placeholder"
- android:selectable="false"
- settings:allowDividerAbove="true"
- settings:enableCopying="true"/>
+ <!-- Model & hardware -->
+ <Preference
+ android:key="device_model"
+ android:order="31"
+ android:title="@string/model_info"
+ android:summary="@string/summary_placeholder"
+ android:fragment="com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFragment"
+ settings:enableCopying="true"
+ settings:keywords="@string/keywords_model_and_hardware"
+ settings:controller="com.android.settings.deviceinfo.HardwareInfoPreferenceController"/>
- <!-- Wi-Fi MAC address -->
- <Preference
- android:key="saved_accesspoints_wifi_mac_address"
- android:order="45"
- android:title="@string/status_wifi_mac_address"
- android:summary="@string/view_saved_network"
- android:fragment="com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsWifiSettings2"
- settings:enableCopying="false"/>
+ <!-- IMEI -->
+ <Preference
+ android:key="imei_info"
+ android:order="32"
+ android:title="@string/status_imei"
+ android:summary="@string/summary_placeholder"
+ settings:keywords="@string/keywords_imei_info"
+ settings:enableCopying="true"
+ settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/>
- <!-- Factory Wi-Fi MAC address -->
- <Preference
- android:key="wifi_mac_address"
- android:order="46"
- android:title="@string/status_device_wifi_mac_address"
- android:summary="@string/summary_placeholder"
- android:selectable="false"
- settings:enableCopying="true"/>
+ <!-- Android version -->
+ <Preference
+ android:key="firmware_version"
+ android:order="42"
+ android:title="@string/firmware_version"
+ android:summary="@string/summary_placeholder"
+ android:fragment="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionSettings"
+ settings:controller="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController"/>
+ </PreferenceCategory>
- <!-- Bluetooth address -->
- <Preference
- android:key="bt_address"
- android:order="47"
- android:title="@string/status_bt_address"
- android:summary="@string/summary_placeholder"
- android:selectable="false"
- settings:enableCopying="true"/>
+ <PreferenceCategory
+ android:title="@string/my_device_info_device_identifiers_category_title">
- <!-- Device up time -->
- <Preference
- android:key="up_time"
- android:order="48"
- android:title="@string/status_up_time"
- android:summary="@string/summary_placeholder"
- android:selectable="false"/>
+ <!--IP address -->
+ <Preference
+ android:key="wifi_ip_address"
+ android:order="44"
+ android:title="@string/wifi_ip_address"
+ android:summary="@string/summary_placeholder"
+ android:selectable="false"
+ settings:enableCopying="true"/>
- <!-- Manual -->
- <Preference
- android:key="manual"
- android:order="50"
- android:title="@string/manual">
- <intent android:action="android.settings.SHOW_MANUAL"/>
- </Preference>
+ <!-- Wi-Fi MAC address -->
+ <Preference
+ android:key="saved_accesspoints_wifi_mac_address"
+ android:order="45"
+ android:title="@string/status_wifi_mac_address"
+ android:summary="@string/view_saved_network"
+ android:fragment="com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsWifiSettings2"
+ settings:enableCopying="false"/>
- <!-- Feedback on the device -->
- <Preference
- android:key="device_feedback"
- android:order="51"
- android:title="@string/device_feedback"
- settings:keywords="@string/keywords_device_feedback"/>
+ <!-- Factory Wi-Fi MAC address -->
+ <Preference
+ android:key="wifi_mac_address"
+ android:order="46"
+ android:title="@string/status_device_wifi_mac_address"
+ android:summary="@string/summary_placeholder"
+ android:selectable="false"
+ settings:enableCopying="true"/>
- <!-- Device FCC equipment id -->
- <Preference
- android:key="fcc_equipment_id"
- android:order="52"
- android:title="@string/fcc_equipment_id"
- android:summary="@string/summary_placeholder"/>
+ <!-- Bluetooth address -->
+ <Preference
+ android:key="bt_address"
+ android:order="47"
+ android:title="@string/status_bt_address"
+ android:summary="@string/summary_placeholder"
+ android:selectable="false"
+ settings:enableCopying="true"/>
- <!-- Build number -->
- <Preference
- android:key="build_number"
- android:order="53"
- android:title="@string/build_number"
- android:summary="@string/summary_placeholder"
- settings:allowDividerAbove="true"
- settings:enableCopying="true"
- settings:controller="com.android.settings.deviceinfo.BuildNumberPreferenceController"/>
+ <!-- Device up time -->
+ <Preference
+ android:key="up_time"
+ android:order="48"
+ android:title="@string/status_up_time"
+ android:summary="@string/summary_placeholder"
+ android:selectable="false"/>
+
+ <!-- Manual -->
+ <Preference
+ android:key="manual"
+ android:order="50"
+ android:title="@string/manual">
+ <intent android:action="android.settings.SHOW_MANUAL"/>
+ </Preference>
+
+ <!-- Feedback on the device -->
+ <Preference
+ android:key="device_feedback"
+ android:order="51"
+ android:title="@string/device_feedback"
+ settings:keywords="@string/keywords_device_feedback"/>
+
+ <!-- Device FCC equipment id -->
+ <Preference
+ android:key="fcc_equipment_id"
+ android:order="52"
+ android:title="@string/fcc_equipment_id"
+ android:summary="@string/summary_placeholder"/>
+
+ <!-- Build number -->
+ <Preference
+ android:key="build_number"
+ android:order="53"
+ android:title="@string/build_number"
+ android:summary="@string/summary_placeholder"
+ settings:enableCopying="true"
+ settings:controller="com.android.settings.deviceinfo.BuildNumberPreferenceController"/>
+ </PreferenceCategory>
</PreferenceScreen>
diff --git a/res/xml/security_lockscreen_settings.xml b/res/xml/security_lockscreen_settings.xml
index 82cb860..0e802f6 100644
--- a/res/xml/security_lockscreen_settings.xml
+++ b/res/xml/security_lockscreen_settings.xml
@@ -46,6 +46,12 @@
android:summary="@string/owner_info_settings_summary" />
<SwitchPreference
+ android:key="security_setting_lockdown_enabled"
+ android:title="@string/lockdown_settings_title"
+ android:summary="@string/lockdown_settings_summary"
+ settings:controller="com.android.settings.security.LockdownButtonPreferenceController" />
+
+ <SwitchPreference
android:key="lockscreen_privacy_wallet_switch"
android:title="@string/lockscreen_privacy_wallet_setting_toggle"
android:summary="@string/lockscreen_privacy_wallet_summary"
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 4f0515c..708dbed 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -77,7 +77,6 @@
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Profile;
import android.provider.ContactsContract.RawContacts;
-import android.provider.Settings;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.Spannable;
@@ -164,9 +163,6 @@
public static final String PROPERTY_HIBERNATION_TARGETS_PRE_S_APPS =
"app_hibernation_targets_pre_s_apps";
- /** Whether or not Settings Shared Axis transition is enabled */
- public static final String SETTINGS_SHARED_AXIS_ENABLED = "settings_shared_axis_enabled";
-
/**
* Finds a matching activity for a preference's intent. If a matching
* activity is not found, it will remove the preference.
@@ -1225,9 +1221,4 @@
public static boolean isProviderModelEnabled(Context context) {
return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
}
-
- public static boolean isPageTransitionEnabled(Context context) {
- return Settings.Global.getInt(context.getContentResolver(),
- SETTINGS_SHARED_AXIS_ENABLED, 0) == 1;
- }
}
diff --git a/src/com/android/settings/applications/RunningServices.java b/src/com/android/settings/applications/RunningServices.java
index 4d13241..b1689d5 100644
--- a/src/com/android/settings/applications/RunningServices.java
+++ b/src/com/android/settings/applications/RunningServices.java
@@ -72,7 +72,11 @@
public void onResume() {
super.onResume();
boolean haveData = mRunningProcessesView.doResume(this, mRunningProcessesAvail);
- mLoadingViewController.handleLoadingContainer(haveData /* done */, false /* animate */);
+ if (haveData) {
+ mLoadingViewController.showContent(false /* animate */);
+ } else {
+ mLoadingViewController.showLoadingView();
+ }
}
@Override
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 6d67524..43e929b 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -208,7 +208,6 @@
private ApplicationsAdapter mApplications;
private View mLoadingContainer;
- private View mListContainer;
private SearchView mSearchView;
// Size resource used for packages whose size computation failed for some reason
@@ -402,25 +401,21 @@
mRootView = inflater.inflate(R.layout.manage_applications_apps, null);
mLoadingContainer = mRootView.findViewById(R.id.loading_container);
- mListContainer = mRootView.findViewById(R.id.list_container);
- if (mListContainer != null) {
- // Create adapter and list view here
- mEmptyView = mListContainer.findViewById(android.R.id.empty);
+ mEmptyView = mRootView.findViewById(android.R.id.empty);
+ mRecyclerView = mRootView.findViewById(R.id.apps_list);
- mApplications = new ApplicationsAdapter(mApplicationsState, this, mFilter,
- savedInstanceState);
- if (savedInstanceState != null) {
- mApplications.mHasReceivedLoadEntries =
- savedInstanceState.getBoolean(EXTRA_HAS_ENTRIES, false);
- mApplications.mHasReceivedBridgeCallback =
- savedInstanceState.getBoolean(EXTRA_HAS_BRIDGE, false);
- }
- mRecyclerView = mListContainer.findViewById(R.id.apps_list);
- mRecyclerView.setItemAnimator(null);
- mRecyclerView.setLayoutManager(new LinearLayoutManager(
- getContext(), RecyclerView.VERTICAL, false /* reverseLayout */));
- mRecyclerView.setAdapter(mApplications);
+ mApplications = new ApplicationsAdapter(mApplicationsState, this, mFilter,
+ savedInstanceState);
+ if (savedInstanceState != null) {
+ mApplications.mHasReceivedLoadEntries =
+ savedInstanceState.getBoolean(EXTRA_HAS_ENTRIES, false);
+ mApplications.mHasReceivedBridgeCallback =
+ savedInstanceState.getBoolean(EXTRA_HAS_BRIDGE, false);
}
+ mRecyclerView.setItemAnimator(null);
+ mRecyclerView.setLayoutManager(new LinearLayoutManager(
+ getContext(), RecyclerView.VERTICAL, false /* reverseLayout */));
+ mRecyclerView.setAdapter(mApplications);
// We have to do this now because PreferenceFrameLayout looks at it
// only when the view is added.
@@ -985,16 +980,8 @@
// overlapped by floating filter.
if (hasFilter) {
mManageApplications.mSpinnerHeader.setVisibility(View.VISIBLE);
- mManageApplications.mRecyclerView.setPadding(0 /* left */,
- mContext.getResources().getDimensionPixelSize(
- R.dimen.app_bar_height) /* top */,
- 0 /* right */,
- 0 /* bottom */);
} else {
mManageApplications.mSpinnerHeader.setVisibility(View.GONE);
- mManageApplications.mRecyclerView.setPadding(0 /* left */, 0 /* top */,
- 0 /* right */,
- 0 /* bottom */);
}
}
}
@@ -1044,7 +1031,8 @@
mManageApplications = manageApplications;
mLoadingViewController = new LoadingViewController(
mManageApplications.mLoadingContainer,
- mManageApplications.mListContainer
+ mManageApplications.mRecyclerView,
+ mManageApplications.mEmptyView
);
mContext = manageApplications.getActivity();
mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
@@ -1303,11 +1291,9 @@
mOriginalEntries = entries;
notifyDataSetChanged();
if (getItemCount() == 0) {
- mManageApplications.mRecyclerView.setVisibility(View.GONE);
- mManageApplications.mEmptyView.setVisibility(View.VISIBLE);
+ mLoadingViewController.showEmpty(false /* animate */);
} else {
- mManageApplications.mEmptyView.setVisibility(View.GONE);
- mManageApplications.mRecyclerView.setVisibility(View.VISIBLE);
+ mLoadingViewController.showContent(false /* animate */);
if (mManageApplications.mSearchView != null
&& mManageApplications.mSearchView.isVisibleToUser()) {
@@ -1324,10 +1310,6 @@
mLastIndex = -1;
}
- if (mSession.getAllApps().size() != 0
- && mManageApplications.mListContainer.getVisibility() != View.VISIBLE) {
- mLoadingViewController.showContent(true /* animate */);
- }
if (mManageApplications.mListType == LIST_TYPE_USAGE_ACCESS) {
// No enabled or disabled filters for usage access.
return;
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index aceb3d7..fb6b49f 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -17,17 +17,14 @@
import android.annotation.LayoutRes;
import android.app.ActivityManager;
-import android.app.ActivityOptions;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.TypedArray;
import android.os.Bundle;
-import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
-import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
@@ -40,10 +37,8 @@
import com.android.settings.R;
import com.android.settings.SubSettings;
-import com.android.settings.Utils;
import com.android.settings.core.CategoryMixin.CategoryHandler;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
-import com.android.settingslib.transition.SettingsTransitionHelper;
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
import com.google.android.material.appbar.AppBarLayout;
@@ -76,13 +71,6 @@
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
- if (Utils.isPageTransitionEnabled(this)) {
- // Enable Activity transitions
- getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
- SettingsTransitionHelper.applyForwardTransition(this);
- SettingsTransitionHelper.applyBackwardTransition(this);
- }
-
super.onCreate(savedInstanceState);
if (isLockTaskModePinned() && !isSettingsRunOnTop()) {
Log.w(TAG, "Devices lock task mode pinned.");
@@ -146,27 +134,9 @@
}
@Override
- public boolean onOptionsItemSelected(@NonNull MenuItem item) {
- final int id = item.getItemId();
- if (id == android.R.id.home) {
- // Make the up button behave the same as the back button.
- finishAfterTransition();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- @Override
public void startActivityForResult(Intent intent, int requestCode,
@androidx.annotation.Nullable Bundle options) {
final int transitionType = getTransitionType(intent);
- if (Utils.isPageTransitionEnabled(this) &&
- transitionType == TransitionType.TRANSITION_SHARED_AXIS) {
- super.startActivityForResult(intent, requestCode,
- createActivityOptionsBundleForTransition(options));
- return;
- }
-
super.startActivityForResult(intent, requestCode, options);
if (transitionType == TransitionType.TRANSITION_SLIDE) {
overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out);
@@ -176,18 +146,6 @@
}
@Override
- public void startActivityForResultAsUser(Intent intent, int requestCode,
- UserHandle userHandle) {
- if (!Utils.isPageTransitionEnabled(this) || requestCode == DEFAULT_REQUEST) {
- super.startActivityForResultAsUser(intent, requestCode, userHandle);
- return;
- }
- super.startActivityForResultAsUser(intent, requestCode,
- createActivityOptionsBundleForTransition(null),
- userHandle);
- }
-
- @Override
protected void onPause() {
// For accessibility activities launched from setup wizard.
if (getTransitionType(getIntent()) == TransitionType.TRANSITION_FADE) {
@@ -294,25 +252,6 @@
}
private int getTransitionType(Intent intent) {
- return intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE,
- SettingsTransitionHelper.TransitionType.TRANSITION_SHARED_AXIS);
+ return intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_NONE);
}
-
- @Nullable
- private Bundle createActivityOptionsBundleForTransition(
- @androidx.annotation.Nullable Bundle options) {
- if (mToolbar == null) {
- Log.w(TAG, "setActionBar(Toolbar) is not called. Cannot apply settings transition!");
- return options;
- }
- final Bundle transitionOptions = ActivityOptions.makeSceneTransitionAnimation(this,
- mToolbar, "shared_element_view").toBundle();
- if (options == null) {
- return transitionOptions;
- }
- final Bundle mergedOptions = new Bundle(options);
- mergedOptions.putAll(transitionOptions);
- return mergedOptions;
- }
-
}
diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
index 35f9c72..b21c6ac 100644
--- a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
+++ b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
@@ -139,13 +139,17 @@
}
public static int isControllerAvailable(Context context) {
- return context.getResources().getBoolean(
- com.android.internal.R.bool.config_adaptive_sleep_available)
- && isAttentionServiceAvailable(context)
+ return isAdaptiveSleepSupported(context)
? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE;
}
+ static boolean isAdaptiveSleepSupported(Context context) {
+ return context.getResources().getBoolean(
+ com.android.internal.R.bool.config_adaptive_sleep_available)
+ && isAttentionServiceAvailable(context);
+ }
+
private static boolean isAttentionServiceAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager();
final String resolvePackage = packageManager.getAttentionServicePackageName();
diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java
index 66f5ed3..18d1049 100644
--- a/src/com/android/settings/display/ScreenTimeoutSettings.java
+++ b/src/com/android/settings/display/ScreenTimeoutSettings.java
@@ -314,8 +314,7 @@
}
private static boolean isScreenAttentionAvailable(Context context) {
- return context.getResources().getBoolean(
- com.android.internal.R.bool.config_adaptive_sleep_available);
+ return AdaptiveSleepPreferenceController.isAdaptiveSleepSupported(context);
}
private static class TimeoutCandidateInfo extends CandidateInfo {
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 25cf4ce..e88d38b 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -116,6 +116,7 @@
static final int MENU_ID_FORGET = Menu.FIRST + 3;
static final int MENU_ID_MODIFY = Menu.FIRST + 4;
static final int MENU_FIX_CONNECTIVITY = Menu.FIRST + 5;
+ static final int MENU_ID_SHARE = Menu.FIRST + 6;
@VisibleForTesting
static final int ADD_NETWORK_REQUEST = 2;
@@ -200,7 +201,7 @@
* ensure that behavior is consistent if {@link #isUiRestricted()} changes. It could be changed
* by the Test DPC tool in AFW mode.
*/
- private boolean mIsRestricted;
+ protected boolean mIsRestricted;
@VisibleForTesting
AirplaneModeEnabler mAirplaneModeEnabler;
@@ -218,7 +219,8 @@
PreferenceCategory mConnectedWifiEntryPreferenceCategory;
@VisibleForTesting
PreferenceCategory mFirstWifiEntryPreferenceCategory;
- private PreferenceCategory mWifiEntryPreferenceCategory;
+ @VisibleForTesting
+ PreferenceCategory mWifiEntryPreferenceCategory;
@VisibleForTesting
AddWifiNetworkPreference mAddWifiNetworkPreference;
private WifiSwitchPreferenceController mWifiSwitchPreferenceController;
@@ -535,7 +537,8 @@
}
if (mSelectedWifiEntry.canDisconnect()) {
- menu.add(Menu.NONE, MENU_ID_DISCONNECT, 0 /* order */,
+ menu.add(Menu.NONE, MENU_ID_SHARE, 0 /* order */, R.string.share);
+ menu.add(Menu.NONE, MENU_ID_DISCONNECT, 1 /* order */,
R.string.wifi_disconnect_button_text);
}
@@ -574,6 +577,10 @@
case MENU_ID_FORGET:
forget(mSelectedWifiEntry);
return true;
+ case MENU_ID_SHARE:
+ WifiDppUtils.showLockScreen(getContext(),
+ () -> launchWifiDppConfiguratorActivity(mSelectedWifiEntry));
+ return true;
case MENU_ID_MODIFY:
showDialog(mSelectedWifiEntry, WifiConfigUiBase2.MODE_MODIFY);
return true;
@@ -608,6 +615,23 @@
return true;
}
+ private void launchWifiDppConfiguratorActivity(WifiEntry wifiEntry) {
+ final Intent intent = WifiDppUtils.getConfiguratorQrCodeGeneratorIntentOrNull(getContext(),
+ mWifiManager, wifiEntry);
+
+ if (intent == null) {
+ Log.e(TAG, "Launch Wi-Fi DPP QR code generator with a wrong Wi-Fi network!");
+ } else {
+ mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
+ SettingsEnums.ACTION_SETTINGS_SHARE_WIFI_QR_CODE,
+ SettingsEnums.SETTINGS_WIFI_DPP_CONFIGURATOR,
+ /* key */ null,
+ /* value */ Integer.MIN_VALUE);
+
+ startActivity(intent);
+ }
+ }
+
private void showDialog(WifiEntry wifiEntry, int dialogMode) {
if (WifiUtils.isNetworkLockedDown(getActivity(), wifiEntry.getWifiConfiguration())
&& wifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) {
@@ -771,7 +795,11 @@
}
}
- private void updateWifiEntryPreferences() {
+ protected void updateWifiEntryPreferences() {
+ // bypass the update if the activity and the view are not ready, or it's restricted UI.
+ if (getActivity() == null || getView() == null || mIsRestricted) {
+ return;
+ }
// in case state has changed
if (mWifiPickerTracker.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
return;
diff --git a/src/com/android/settings/panel/InternetConnectivityPanel.java b/src/com/android/settings/panel/InternetConnectivityPanel.java
index 0fa1e46..53c0f20 100644
--- a/src/com/android/settings/panel/InternetConnectivityPanel.java
+++ b/src/com/android/settings/panel/InternetConnectivityPanel.java
@@ -30,6 +30,7 @@
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.Looper;
+import android.provider.Settings;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
@@ -235,7 +236,10 @@
@Override
public Intent getSeeMoreIntent() {
- return null;
+ // Don't remove the see more intent for non-provider model design. This intent will be
+ // used when isCustomizedButtonUsed() returns false.
+ return new Intent(Settings.ACTION_WIRELESS_SETTINGS)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
@Override
diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java
index 15a90e3..3261b81 100644
--- a/src/com/android/settings/password/SetupChooseLockGeneric.java
+++ b/src/com/android/settings/password/SetupChooseLockGeneric.java
@@ -23,7 +23,6 @@
import android.content.Context;
import android.content.Intent;
-import android.content.res.Resources;
import android.os.Bundle;
import android.os.IBinder;
import android.os.UserHandle;
@@ -43,6 +42,7 @@
import com.android.settings.utils.SettingsDividerItemDecoration;
import com.google.android.setupdesign.GlifPreferenceLayout;
+import com.google.android.setupdesign.util.ThemeHelper;
/**
* Setup Wizard's version of ChooseLockGeneric screen. It inherits the logic and basic structure
@@ -67,13 +67,9 @@
}
@Override
- protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
- final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
- super.onApplyThemeResource(theme, new_resid, first);
- }
-
- @Override
protected void onCreate(Bundle savedInstance) {
+ setTheme(SetupWizardUtils.getTheme(this, getIntent()));
+ ThemeHelper.trySetDynamicColor(this);
super.onCreate(savedInstance);
if(getIntent().hasExtra(EXTRA_KEY_REQUESTED_MIN_COMPLEXITY)) {
@@ -92,6 +88,12 @@
findViewById(R.id.content_parent).setFitsSystemWindows(false);
}
+ @Override
+ protected boolean isToolbarEnabled() {
+ // Hide the action bar from this page.
+ return false;
+ }
+
public static class SetupChooseLockGenericFragment extends ChooseLockGenericFragment {
public static final String EXTRA_PASSWORD_QUALITY = ":settings:password_quality";
diff --git a/src/com/android/settings/widget/LoadingViewController.java b/src/com/android/settings/widget/LoadingViewController.java
index 294e55e..66eebf3 100644
--- a/src/com/android/settings/widget/LoadingViewController.java
+++ b/src/com/android/settings/widget/LoadingViewController.java
@@ -22,34 +22,66 @@
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
+import androidx.annotation.Nullable;
+
/**
- * A helper class that manages show/hide loading spinner.
+ * A helper class that manages show/hide loading spinner, content view and empty view (optional).
*/
public class LoadingViewController {
private static final long DELAY_SHOW_LOADING_CONTAINER_THRESHOLD_MS = 100L;
- public final Handler mFgHandler;
- public final View mLoadingView;
- public final View mContentView;
+ private final Handler mFgHandler;
+ private final View mLoadingView;
+ private final View mContentView;
+ private final View mEmptyView;
public LoadingViewController(View loadingView, View contentView) {
+ this(loadingView, contentView, null /* emptyView*/);
+ }
+
+ public LoadingViewController(View loadingView, View contentView, @Nullable View emptyView) {
mLoadingView = loadingView;
mContentView = contentView;
+ mEmptyView = emptyView;
mFgHandler = new Handler(Looper.getMainLooper());
}
private Runnable mShowLoadingContainerRunnable = new Runnable() {
public void run() {
- handleLoadingContainer(false /* done */, false /* animate */);
+ showLoadingView();
}
};
+ /**
+ * Shows content view and hides loading view & empty view.
+ */
public void showContent(boolean animate) {
// Cancel any pending task to show the loading animation and show the list of
// apps directly.
mFgHandler.removeCallbacks(mShowLoadingContainerRunnable);
- handleLoadingContainer(true /* show */, animate);
+ handleLoadingContainer(true /* showContent */, false /* showEmpty*/, animate);
+ }
+
+ /**
+ * Shows empty view and hides loading view & content view.
+ */
+ public void showEmpty(boolean animate) {
+ if (mEmptyView == null) {
+ return;
+ }
+
+ // Cancel any pending task to show the loading animation and show the list of
+ // apps directly.
+ mFgHandler.removeCallbacks(mShowLoadingContainerRunnable);
+ handleLoadingContainer(false /* showContent */, true /* showEmpty */, animate);
+ }
+
+ /**
+ * Shows loading view and hides content view & empty view.
+ */
+ public void showLoadingView() {
+ handleLoadingContainer(false /* showContent */, false /* showEmpty */, false /* animate */);
}
public void showLoadingViewDelayed() {
@@ -57,8 +89,9 @@
mShowLoadingContainerRunnable, DELAY_SHOW_LOADING_CONTAINER_THRESHOLD_MS);
}
- public void handleLoadingContainer(boolean done, boolean animate) {
- handleLoadingContainer(mLoadingView, mContentView, done, animate);
+ private void handleLoadingContainer(boolean showContent, boolean showEmpty, boolean animate) {
+ handleLoadingContainer(mLoadingView, mContentView, mEmptyView,
+ showContent, showEmpty, animate);
}
/**
@@ -75,6 +108,25 @@
setViewShown(content, done, animate);
}
+ /**
+ * Show/hide loading view and content view and empty view.
+ *
+ * @param loading The loading spinner view
+ * @param content The content view
+ * @param empty The empty view shows no item summary to users.
+ * @param showContent If true, content is set visible and loading is set invisible.
+ * @param showEmpty If true, empty is set visible and loading is set invisible.
+ * @param animate Whether or not content/loading views should animate in/out.
+ */
+ public static void handleLoadingContainer(View loading, View content, View empty,
+ boolean showContent, boolean showEmpty, boolean animate) {
+ if (empty != null) {
+ setViewShown(empty, showEmpty, animate);
+ }
+ setViewShown(content, showContent, animate);
+ setViewShown(loading, !showContent && !showEmpty, animate);
+ }
+
private static void setViewShown(final View view, boolean shown, boolean animate) {
if (animate) {
Animation animation = AnimationUtils.loadAnimation(view.getContext(),
diff --git a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
index 86f5fe8..25eca7a 100644
--- a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
@@ -28,7 +28,6 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -49,7 +48,6 @@
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.SearchView;
import androidx.fragment.app.FragmentActivity;
@@ -156,22 +154,6 @@
}
@Test
- public void onCreateView_shouldNotShowLoadingContainer() {
- ReflectionHelpers.setField(mFragment, "mResetAppsHelper", mock(ResetAppsHelper.class));
- doNothing().when(mFragment).createHeader();
-
- final LayoutInflater layoutInflater = mock(LayoutInflater.class);
- final View view = mock(View.class);
- final View loadingContainer = mock(View.class);
- when(layoutInflater.inflate(anyInt(), eq(null))).thenReturn(view);
- when(view.findViewById(R.id.loading_container)).thenReturn(loadingContainer);
-
- mFragment.onCreateView(layoutInflater, mock(ViewGroup.class), null);
-
- verify(loadingContainer, never()).setVisibility(View.VISIBLE);
- }
-
- @Test
public void onCreateOptionsMenu_shouldSetSearchQueryListener() {
final SearchView searchView = mock(SearchView.class);
final MenuItem searchMenu = mock(MenuItem.class);
@@ -221,7 +203,6 @@
@Test
public void updateLoading_appLoaded_shouldNotDelayCallToHandleLoadingContainer() {
ReflectionHelpers.setField(mFragment, "mLoadingContainer", mock(View.class));
- ReflectionHelpers.setField(mFragment, "mListContainer", mock(View.class));
final ManageApplications.ApplicationsAdapter adapter =
spy(new ManageApplications.ApplicationsAdapter(mState, mFragment,
AppFilterRegistry.getInstance().get(FILTER_APPS_ALL), new Bundle()));
@@ -243,7 +224,6 @@
@Test
public void updateLoading_appNotLoaded_shouldDelayCallToHandleLoadingContainer() {
ReflectionHelpers.setField(mFragment, "mLoadingContainer", mock(View.class));
- ReflectionHelpers.setField(mFragment, "mListContainer", mock(View.class));
final ManageApplications.ApplicationsAdapter adapter =
spy(new ManageApplications.ApplicationsAdapter(mState, mFragment,
AppFilterRegistry.getInstance().get(FILTER_APPS_ALL), new Bundle()));
@@ -272,7 +252,6 @@
when(listContainer.getVisibility()).thenReturn(View.INVISIBLE);
when(listContainer.getContext()).thenReturn(context);
ReflectionHelpers.setField(mFragment, "mLoadingContainer", loadingContainer);
- ReflectionHelpers.setField(mFragment, "mListContainer", listContainer);
final ManageApplications.ApplicationsAdapter adapter =
spy(new ManageApplications.ApplicationsAdapter(mState, mFragment,
AppFilterRegistry.getInstance().get(FILTER_APPS_ALL), new Bundle()));
@@ -296,7 +275,7 @@
adapter.onRebuildComplete(null);
- verify(loadingViewController).showContent(true /* animate */);
+ verify(loadingViewController).showEmpty(false /* animate */);
}
@Test
@@ -304,15 +283,16 @@
final String query = "Test";
final RecyclerView recyclerView = mock(RecyclerView.class);
final View emptyView = mock(View.class);
+ final View loadingContainer = mock(View.class);
ReflectionHelpers.setField(mFragment, "mRecyclerView", recyclerView);
ReflectionHelpers.setField(mFragment, "mEmptyView", emptyView);
+ ReflectionHelpers.setField(mFragment, "mLoadingContainer", loadingContainer);
final SearchView searchView = mock(SearchView.class);
ReflectionHelpers.setField(mFragment, "mSearchView", searchView);
when(searchView.isVisibleToUser()).thenReturn(true);
when(searchView.getQuery()).thenReturn(query);
final View listContainer = mock(View.class);
when(listContainer.getVisibility()).thenReturn(View.VISIBLE);
- ReflectionHelpers.setField(mFragment, "mListContainer", listContainer);
ReflectionHelpers.setField(
mFragment, "mFilterAdapter", mock(ManageApplications.FilterSpinnerAdapter.class));
final ArrayList<ApplicationsState.AppEntry> appList = new ArrayList<>();
@@ -491,8 +471,6 @@
mFragment.mFilterAdapter.updateFilterView(true);
assertThat(mFragment.mSpinnerHeader.getVisibility()).isEqualTo(View.VISIBLE);
- assertThat(mFragment.mRecyclerView.getPaddingTop()).isEqualTo(
- mContext.getResources().getDimensionPixelSize(R.dimen.app_bar_height));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java b/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
index 2a0d3df..b68bcec 100644
--- a/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
+++ b/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
@@ -28,14 +28,12 @@
import android.content.Context;
import android.content.Intent;
-import android.os.Bundle;
import android.os.UserHandle;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import com.android.settings.SettingsActivity;
-import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.transition.SettingsTransitionHelper;
@@ -45,7 +43,6 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
diff --git a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
index abb616a..41e4429 100644
--- a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
@@ -22,16 +22,24 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
@@ -80,6 +88,9 @@
@Mock
Preference mDisableOptionsPreference;
+ @Mock
+ private PackageManager mPackageManager;
+
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
@@ -90,6 +101,15 @@
mContentResolver = mContext.getContentResolver();
mResources = spy(mContext.getResources());
+ doReturn(mPackageManager).when(mContext).getPackageManager();
+ when(mPackageManager.getAttentionServicePackageName()).thenReturn("some.package");
+ when(mPackageManager.checkPermission(any(), any())).thenReturn(
+ PackageManager.PERMISSION_GRANTED);
+ final ResolveInfo attentionServiceResolveInfo = new ResolveInfo();
+ attentionServiceResolveInfo.serviceInfo = new ServiceInfo();
+ when(mPackageManager.resolveService(isA(Intent.class), anyInt())).thenReturn(
+ attentionServiceResolveInfo);
+
doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries);
doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries);
doReturn(true).when(mResources).getBoolean(
@@ -148,6 +168,13 @@
}
@Test
+ public void updateCandidates_AttentionServiceNotInstalled_doNoShowAdaptiveSleepPreference() {
+ when(mPackageManager.resolveService(isA(Intent.class), anyInt())).thenReturn(null);
+
+ verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen);
+ }
+
+ @Test
public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
mSettings.mDisableOptionsPreference = mDisableOptionsPreference;
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index 7affe68..9951449 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -535,4 +535,32 @@
assertThat(p instanceof NetworkProviderSettings.FirstWifiEntryPreference).isTrue();
}
+
+ @Test
+ public void updateWifiEntryPreferences_activityIsNull_ShouldNotCrash() {
+ when(mNetworkProviderSettings.getActivity()).thenReturn(null);
+
+ // should not crash
+ mNetworkProviderSettings.updateWifiEntryPreferences();
+ }
+
+ @Test
+ public void updateWifiEntryPreferences_viewIsNull_ShouldNotCrash() {
+ final FragmentActivity activity = mock(FragmentActivity.class);
+ when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
+ when(mNetworkProviderSettings.getView()).thenReturn(null);
+
+ // should not crash
+ mNetworkProviderSettings.updateWifiEntryPreferences();
+ }
+
+ @Test
+ public void updateWifiEntryPreferences_isRestricted_bypassUpdate() {
+ mNetworkProviderSettings.mIsRestricted = true;
+ mNetworkProviderSettings.mWifiEntryPreferenceCategory = mock(PreferenceCategory.class);
+
+ mNetworkProviderSettings.updateWifiEntryPreferences();
+
+ verify(mNetworkProviderSettings.mWifiEntryPreferenceCategory, never()).setVisible(true);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
index 7534edf..40cb25b 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
@@ -47,7 +47,6 @@
private static boolean sIsVoiceCapable;
private static ArraySet<String> sResultLinks = new ArraySet<>();
private static boolean sIsBatteryPresent;
- private static boolean sIsPageTransitionEnabled;
private static boolean sIsMultipleBiometricsSupported;
@Implementation
@@ -71,7 +70,6 @@
sIsVoiceCapable = false;
sResultLinks = new ArraySet<>();
sIsBatteryPresent = true;
- sIsPageTransitionEnabled = true;
sIsMultipleBiometricsSupported = false;
}
@@ -172,15 +170,6 @@
}
@Implementation
- protected static boolean isPageTransitionEnabled(Context context) {
- return sIsPageTransitionEnabled;
- }
-
- public static void setIsPageTransitionEnabled(boolean isPageTransitionEnabled) {
- sIsPageTransitionEnabled = isPageTransitionEnabled;
- }
-
- @Implementation
protected static boolean isMultipleBiometricsSupported(Context context) {
return sIsMultipleBiometricsSupported;
}
diff --git a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java
index 837cf7a..c13d368 100644
--- a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java
+++ b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java
@@ -255,8 +255,8 @@
}
@Test
- public void getSeeMoreIntent_shouldBeNull() {
- assertThat(mPanel.getSeeMoreIntent()).isNull();
+ public void getSeeMoreIntent_shouldNotNull() {
+ assertThat(mPanel.getSeeMoreIntent()).isNotNull();
}
@Test