Snap for 5030474 from c08dcbd700 to qt-release
Change-Id: I3fe0219e9c5711d52f3b9e804ad26b32cac82ca0
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.3 KiB |
@@ -21,6 +21,6 @@
|
||||
android:tint="?android:attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M21,16v-2l-8,-5V3.5C13,2.67 12.33,2 11.5,2S10,2.67 10,3.5V9l-8,5v2l8,-2.5V19l-2,1.5V22l3.5,-1l3.5,1v-1.5L13,19v-5.5L21,16z"/>
|
||||
android:pathData="M20,13h-7v7h-2v-7H4v-2h7V4h2v7h7V13z"/>
|
||||
</vector>
|
||||
|
||||
|
||||
@@ -14,48 +14,40 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/empty_print_state"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:visibility="gone">
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
<ImageView
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="110dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:src="@*android:drawable/ic_print"
|
||||
android:scaleType="fitEnd"
|
||||
android:alpha="0.1"
|
||||
android:tint="?android:colorForeground"
|
||||
android:importantForAccessibility="no" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/message"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="?android:attr/textColorSecondary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="12dip"
|
||||
android:src="@drawable/ic_grayedout_printer"
|
||||
android:contentDescription="@null">
|
||||
</ImageView>
|
||||
<Button
|
||||
android:id="@+id/add_new_service"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="?android:attr/borderlessButtonStyle"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:text="@string/print_menu_item_add_service"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/message"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="?android:attr/textColorSecondary">
|
||||
</TextView>
|
||||
|
||||
<Button android:id="@+id/add_new_service"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:visibility="gone"
|
||||
style="?android:attr/buttonBarButtonStyle"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:text="@string/print_menu_item_add_service"
|
||||
android:textAllCaps="true"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -14,45 +14,38 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/empty_printers_list_service_enabled"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:visibility="gone">
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
<ImageView
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="110dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:src="@*android:drawable/ic_print"
|
||||
android:scaleType="fitEnd"
|
||||
android:alpha="0.1"
|
||||
android:tint="?android:colorForeground"
|
||||
android:importantForAccessibility="no"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:text="@string/print_searching_for_printers"/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="12dip"
|
||||
android:src="@drawable/ic_grayedout_printer"
|
||||
android:importantForAccessibility="no">
|
||||
</ImageView>
|
||||
<ProgressBar
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:importantForAccessibility="no"
|
||||
style="?android:attr/progressBarStyleHorizontal"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="32dip"
|
||||
android:layout_marginRight="32dip"
|
||||
android:gravity="center"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:text="@string/print_searching_for_printers">
|
||||
</TextView>
|
||||
|
||||
<ProgressBar
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
style="?android:attr/progressBarStyleHorizontal">
|
||||
</ProgressBar>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2014 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.
|
||||
-->
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/icon_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="start|center_vertical"
|
||||
android:minWidth="56dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingEnd="8dp"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp">
|
||||
<ImageView
|
||||
android:id="@android:id/icon"
|
||||
android:layout_width="@dimen/secondary_app_icon_size"
|
||||
android:layout_height="@dimen/secondary_app_icon_size"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp">
|
||||
|
||||
<TextView android:id="@android:id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.TileTitle"
|
||||
android:ellipsize="marquee"
|
||||
android:fadingEdge="horizontal" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/summary_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<TextView android:id="@android:id/summary"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAppearance="@style/TextAppearance.Small"
|
||||
android:textAlignment="viewStart"
|
||||
android:textColor="?android:attr/textColorSecondary" />
|
||||
|
||||
<TextView android:id="@+id/appendix"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textAppearance="@style/TextAppearance.Small"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end" />
|
||||
</LinearLayout>
|
||||
<ProgressBar
|
||||
android:id="@android:id/progress"
|
||||
style="?android:attr/progressBarStyleHorizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:max="100"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@android:id/widget_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:minWidth="64dp"
|
||||
android:orientation="vertical" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -22,7 +22,6 @@
|
||||
<dimen name="action_bar_switch_padding">16dip</dimen>
|
||||
|
||||
<dimen name="app_icon_size">40dip</dimen>
|
||||
<dimen name="secondary_app_icon_size">32dp</dimen>
|
||||
<dimen name="min_tap_target_size">48dp</dimen>
|
||||
<dimen name="screen_margin_sides">64dip</dimen>
|
||||
<dimen name="screen_margin_top">72dip</dimen>
|
||||
|
||||
@@ -8301,7 +8301,7 @@
|
||||
<!-- Label for showing apps with blocked notifications in list [CHAR LIMIT=30] -->
|
||||
<string name="filter_notif_all_apps">Apps: All</string>
|
||||
<!-- Label for showing apps with blocked notifications in list [CHAR LIMIT=30] -->
|
||||
<string name="filter_notif_blocked_apps">Apps: Turned off</string>
|
||||
<string name="filter_notif_blocked_apps">Turned off</string>
|
||||
<!-- Label for showing categories with urgent notifications in list [CHAR LIMIT=30] -->
|
||||
<string name="filter_notif_urgent_channels">Categories: Urgent importance</string>
|
||||
<!-- Label for showing categories with low importance notifications in list [CHAR LIMIT=30] -->
|
||||
|
||||
@@ -21,59 +21,59 @@
|
||||
android:key="app_default_settings_screen"
|
||||
android:title="@string/app_default_dashboard_title">
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="assist_and_voice_input"
|
||||
android:title="@string/assist_and_voice_input_title"
|
||||
android:fragment="com.android.settings.applications.assist.ManageAssist"
|
||||
settings:searchable="false"/>
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="default_browser"
|
||||
android:title="@string/default_browser_title"
|
||||
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
|
||||
settings:keywords="@string/keywords_default_browser">
|
||||
<extra android:name="for_work" android:value="false" />
|
||||
</com.android.settings.widget.AppPreference>
|
||||
</com.android.settingslib.widget.apppreference.AppPreference>
|
||||
|
||||
<com.android.settings.widget.GearPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="default_home"
|
||||
android:title="@string/home_app"
|
||||
android:fragment="com.android.settings.applications.defaultapps.DefaultHomePicker"
|
||||
settings:keywords="@string/keywords_home" />
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="default_phone_app"
|
||||
android:title="@string/default_phone_title"
|
||||
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
|
||||
settings:keywords="@string/keywords_default_phone_app" />
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="default_sms_app"
|
||||
android:title="@string/sms_application_title"
|
||||
android:fragment="com.android.settings.applications.defaultapps.DefaultSmsPicker"
|
||||
settings:keywords="@string/keywords_more_default_sms_app" />
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="default_payment_app"
|
||||
android:title="@string/nfc_payment_settings_title"
|
||||
android:summary="@string/summary_placeholder"
|
||||
android:fragment="com.android.settings.nfc.PaymentSettings"
|
||||
settings:keywords="@string/keywords_default_payment_app"/>
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="default_emergency_app"
|
||||
android:title="@string/default_emergency_app"
|
||||
settings:keywords="@string/keywords_emergency_app" />
|
||||
|
||||
<!--
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="default_notification_asst_app"
|
||||
android:title="@string/default_notification_assistant"
|
||||
android:fragment="com.android.settings.applications.defaultapps.DefaultNotificationAssistantPicker"
|
||||
/>
|
||||
-->
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="domain_urls"
|
||||
android:title="@string/domain_urls_title"
|
||||
android:fragment="com.android.settings.applications.managedomainurls.ManageDomainUrls"
|
||||
@@ -83,21 +83,21 @@
|
||||
android:key="work_app_defaults"
|
||||
android:title="@string/default_for_work">
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="work_default_browser"
|
||||
android:title="@string/default_browser_title"
|
||||
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
|
||||
settings:searchable="false">
|
||||
<extra android:name="for_work" android:value="true" />
|
||||
</com.android.settings.widget.AppPreference>
|
||||
</com.android.settingslib.widget.apppreference.AppPreference>
|
||||
|
||||
<com.android.settings.widget.AppPreference
|
||||
<com.android.settingslib.widget.apppreference.AppPreference
|
||||
android:key="work_default_phone_app"
|
||||
android:title="@string/default_phone_title"
|
||||
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
|
||||
settings:searchable="false">
|
||||
<extra android:name="for_work" android:value="true" />
|
||||
</com.android.settings.widget.AppPreference>
|
||||
</com.android.settingslib.widget.apppreference.AppPreference>
|
||||
|
||||
</com.android.settings.widget.WorkOnlyCategory>
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import androidx.preference.Preference.OnPreferenceClickListener;
|
||||
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
public class AccountTypePreference extends AppPreference implements OnPreferenceClickListener {
|
||||
/**
|
||||
|
||||
@@ -100,18 +100,20 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
|
||||
}
|
||||
|
||||
public static CharSequence getSummary(Context context, NotificationsSentState state,
|
||||
boolean sortByRecency) {
|
||||
if (sortByRecency) {
|
||||
int sortOrder) {
|
||||
if (sortOrder == R.id.sort_order_recent_notification) {
|
||||
if (state.lastSent == 0) {
|
||||
return context.getString(R.string.notifications_sent_never);
|
||||
}
|
||||
return StringUtil.formatRelativeTime(
|
||||
context, System.currentTimeMillis() - state.lastSent, true);
|
||||
} else {
|
||||
} else if (sortOrder == R.id.sort_order_frequent_notification) {
|
||||
if (state.avgSentWeekly > 0) {
|
||||
return context.getString(R.string.notifications_sent_weekly, state.avgSentWeekly);
|
||||
}
|
||||
return context.getString(R.string.notifications_sent_daily, state.avgSentDaily);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,6 +269,21 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
|
||||
}
|
||||
};
|
||||
|
||||
public static final AppFilter FILTER_APP_NOTIFICATION_BLOCKED = new AppFilter() {
|
||||
@Override
|
||||
public void init() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean filterApp(AppEntry info) {
|
||||
NotificationsSentState state = getNotificationsSentState(info);
|
||||
if (state != null) {
|
||||
return state.blocked;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
public static final Comparator<AppEntry> RECENT_NOTIFICATION_COMPARATOR
|
||||
= new Comparator<AppEntry>() {
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ import android.text.TextUtils;
|
||||
import android.text.format.Formatter;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
public class ProcessStatsPreference extends AppPreference {
|
||||
static final String TAG = "ProcessStatsPreference";
|
||||
|
||||
@@ -42,11 +42,11 @@ import androidx.preference.PreferenceScreen;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.applications.AppUtils;
|
||||
import com.android.settingslib.applications.ApplicationsState;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.utils.StringUtil;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -49,6 +49,7 @@ public class AppFilterRegistry {
|
||||
FILTER_APPS_WITH_OVERLAY,
|
||||
FILTER_APPS_WRITE_SETTINGS,
|
||||
FILTER_APPS_INSTALL_SOURCES,
|
||||
FILTER_APPS_BLOCKED,
|
||||
})
|
||||
@interface FilterType {
|
||||
}
|
||||
@@ -71,14 +72,15 @@ public class AppFilterRegistry {
|
||||
public static final int FILTER_APPS_INSTALL_SOURCES = 13;
|
||||
public static final int FILTER_APP_HAS_DIRECTORY_ACCESS = 14;
|
||||
public static final int FILTER_APP_CAN_CHANGE_WIFI_STATE = 15;
|
||||
// Next id: 16
|
||||
public static final int FILTER_APPS_BLOCKED = 16;
|
||||
// Next id: 17
|
||||
|
||||
private static AppFilterRegistry sRegistry;
|
||||
|
||||
private final AppFilterItem[] mFilters;
|
||||
|
||||
private AppFilterRegistry() {
|
||||
mFilters = new AppFilterItem[16];
|
||||
mFilters = new AppFilterItem[17];
|
||||
|
||||
// High power whitelist, on
|
||||
mFilters[FILTER_APPS_POWER_WHITELIST] = new AppFilterItem(
|
||||
@@ -178,6 +180,12 @@ public class AppFilterRegistry {
|
||||
AppStateChangeWifiStateBridge.FILTER_CHANGE_WIFI_STATE,
|
||||
FILTER_APP_CAN_CHANGE_WIFI_STATE,
|
||||
R.string.filter_write_settings_apps);
|
||||
|
||||
// Blocked Notifications
|
||||
mFilters[FILTER_APPS_BLOCKED] = new AppFilterItem(
|
||||
AppStateNotificationBridge.FILTER_APP_NOTIFICATION_BLOCKED,
|
||||
FILTER_APPS_BLOCKED,
|
||||
R.string.filter_notif_blocked_apps);
|
||||
}
|
||||
|
||||
public static AppFilterRegistry getInstance() {
|
||||
|
||||
@@ -20,6 +20,8 @@ import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE;
|
||||
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
.FILTER_APPS_ALL;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
.FILTER_APPS_BLOCKED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
.FILTER_APPS_DISABLED;
|
||||
import static com.android.settings.applications.manageapplications.AppFilterRegistry
|
||||
@@ -409,6 +411,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
if (mListType == LIST_TYPE_NOTIFICATION) {
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_RECENT);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_FREQUENT);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_BLOCKED);
|
||||
mFilterAdapter.disableFilter(FILTER_APPS_ALL);
|
||||
}
|
||||
if (mListType == LIST_TYPE_HIGH_POWER) {
|
||||
@@ -955,6 +958,8 @@ public class ManageApplications extends InstrumentedFragment
|
||||
rebuild(R.id.sort_order_frequent_notification);
|
||||
} else if (FILTER_APPS_RECENT == appFilter.getFilterType()) {
|
||||
rebuild(R.id.sort_order_recent_notification);
|
||||
} else if (FILTER_APPS_BLOCKED == appFilter.getFilterType()) {
|
||||
rebuild(R.id.sort_order_alpha);
|
||||
} else {
|
||||
rebuild();
|
||||
}
|
||||
@@ -1111,16 +1116,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
|
||||
@VisibleForTesting
|
||||
static boolean shouldUseStableItemHeight(int listType) {
|
||||
switch (listType) {
|
||||
case LIST_TYPE_NOTIFICATION:
|
||||
// Most entries in notification type has no summary. Don't use stable height
|
||||
// so height is short for most entries.
|
||||
return false;
|
||||
default:
|
||||
// Other types have non-empty summary, so keep the height as we expect summary
|
||||
// to fill in.
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean packageNameEquals(PackageItemInfo info1, PackageItemInfo info2) {
|
||||
@@ -1338,8 +1334,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
if (entry.extraInfo != null
|
||||
&& entry.extraInfo instanceof NotificationsSentState) {
|
||||
holder.setSummary(AppStateNotificationBridge.getSummary(mContext,
|
||||
(NotificationsSentState) entry.extraInfo,
|
||||
(mLastSortMode == R.id.sort_order_recent_notification)));
|
||||
(NotificationsSentState) entry.extraInfo, mLastSortMode));
|
||||
} else {
|
||||
holder.setSummary(null);
|
||||
}
|
||||
@@ -1388,8 +1383,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
if (entry.extraInfo != null
|
||||
&& entry.extraInfo instanceof NotificationsSentState) {
|
||||
holder.setSummary(AppStateNotificationBridge.getSummary(mContext,
|
||||
(NotificationsSentState) entry.extraInfo,
|
||||
(mLastSortMode == R.id.sort_order_recent_notification)));
|
||||
(NotificationsSentState) entry.extraInfo, mLastSortMode));
|
||||
} else {
|
||||
holder.setSummary(null);
|
||||
}
|
||||
|
||||
@@ -27,8 +27,8 @@ import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.applications.ApplicationsState.AppEntry;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
public class DomainAppPreference extends AppPreference {
|
||||
|
||||
|
||||
@@ -42,9 +42,9 @@ import com.android.settings.R;
|
||||
import com.android.settings.applications.AppInfoBase;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.search.Indexable;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settings.widget.EmptyTextSettings;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import java.text.Collator;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -54,8 +54,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
|
||||
|
||||
// Bluetooth dependencies for the connection we are trying to establish
|
||||
private LocalBluetoothManager mBluetoothManager;
|
||||
@VisibleForTesting
|
||||
BluetoothDevice mDevice;
|
||||
private BluetoothDevice mDevice;
|
||||
@VisibleForTesting
|
||||
int mType;
|
||||
private String mUserInput;
|
||||
@@ -189,16 +188,16 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
|
||||
*
|
||||
*/
|
||||
public void setContactSharingState() {
|
||||
if ((mDevice.getPhonebookAccessPermission() != BluetoothDevice.ACCESS_ALLOWED)
|
||||
&& (mDevice.getPhonebookAccessPermission() != BluetoothDevice.ACCESS_REJECTED)) {
|
||||
if (mDevice.getBluetoothClass().getDeviceClass()
|
||||
== BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE) {
|
||||
onCheckedChanged(null, true);
|
||||
} else {
|
||||
onCheckedChanged(null, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
final int permission = mDevice.getPhonebookAccessPermission();
|
||||
if (permission == BluetoothDevice.ACCESS_ALLOWED
|
||||
|| (permission == BluetoothDevice.ACCESS_UNKNOWN && mDevice.getBluetoothClass().
|
||||
getDeviceClass() == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE)) {
|
||||
onCheckedChanged(null, true);
|
||||
} else {
|
||||
onCheckedChanged(null, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* A method for querying if the provided editable is a valid passkey/pin format for this device.
|
||||
|
||||
@@ -41,7 +41,6 @@ import java.util.List;
|
||||
*/
|
||||
public class DashboardData {
|
||||
public static final int POSITION_NOT_FOUND = -1;
|
||||
public static final int MAX_SUGGESTION_COUNT = 2;
|
||||
|
||||
// stable id for different type of items.
|
||||
@VisibleForTesting
|
||||
@@ -185,7 +184,7 @@ public class DashboardData {
|
||||
final List<ConditionalCard> conditions = mConditions;
|
||||
final boolean hasConditions = sizeOf(conditions) > 0;
|
||||
|
||||
final List<Suggestion> suggestions = getSuggestionsToShow(mSuggestions);
|
||||
final List<Suggestion> suggestions = mSuggestions;
|
||||
final boolean hasSuggestions = sizeOf(suggestions) > 0;
|
||||
|
||||
/* Suggestion container. This is the card view that contains the list of suggestions.
|
||||
@@ -225,20 +224,6 @@ public class DashboardData {
|
||||
return list == null ? 0 : list.size();
|
||||
}
|
||||
|
||||
private List<Suggestion> getSuggestionsToShow(List<Suggestion> suggestions) {
|
||||
if (suggestions == null) {
|
||||
return null;
|
||||
}
|
||||
if (suggestions.size() <= MAX_SUGGESTION_COUNT) {
|
||||
return suggestions;
|
||||
}
|
||||
final List<Suggestion> suggestionsToShow = new ArrayList<>(MAX_SUGGESTION_COUNT);
|
||||
for (int i = 0; i < MAX_SUGGESTION_COUNT; i++) {
|
||||
suggestionsToShow.add(suggestions.get(i));
|
||||
}
|
||||
return suggestionsToShow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builder used to build the ItemsData
|
||||
*/
|
||||
|
||||
@@ -23,11 +23,8 @@ import android.service.settings.suggestions.Suggestion;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.suggestions.SuggestionControllerMixinCompat;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/** Interface should be implemented if you have added new suggestions */
|
||||
public interface SuggestionFeatureProvider {
|
||||
|
||||
@@ -49,11 +46,6 @@ public interface SuggestionFeatureProvider {
|
||||
*/
|
||||
SharedPreferences getSharedPrefs(Context context);
|
||||
|
||||
/**
|
||||
* Only keep top few suggestions from exclusive suggestions.
|
||||
*/
|
||||
void filterExclusiveSuggestions(List<Tile> suggestions);
|
||||
|
||||
/**
|
||||
* Dismisses a suggestion.
|
||||
*/
|
||||
|
||||
@@ -45,7 +45,6 @@ import java.util.List;
|
||||
public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider {
|
||||
|
||||
private static final String TAG = "SuggestionFeature";
|
||||
private static final int EXCLUSIVE_SUGGESTION_MAX_COUNT = 3;
|
||||
|
||||
private static final String SHARED_PREF_FILENAME = "suggestions";
|
||||
|
||||
@@ -97,17 +96,6 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider
|
||||
.getMetricsFeatureProvider();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void filterExclusiveSuggestions(List<Tile> suggestions) {
|
||||
if (suggestions == null) {
|
||||
return;
|
||||
}
|
||||
for (int i = suggestions.size() - 1; i >= EXCLUSIVE_SUGGESTION_MAX_COUNT; i--) {
|
||||
Log.d(TAG, "Removing exclusive suggestion");
|
||||
suggestions.remove(i);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dismissSuggestion(Context context, SuggestionControllerMixinCompat mixin,
|
||||
Suggestion suggestion) {
|
||||
|
||||
@@ -20,11 +20,11 @@ import android.widget.ProgressBar;
|
||||
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.AppItem;
|
||||
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;
|
||||
|
||||
public class AppDataUsagePreference extends AppPreference {
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.applications.ApplicationFeatureProvider;
|
||||
import com.android.settings.applications.UserAppInfo;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -80,6 +80,7 @@ public class ApplicationListPreferenceController extends AbstractPreferenceContr
|
||||
|
||||
/**
|
||||
* Simple interface for building application list within {
|
||||
*
|
||||
* @link ApplicationListPreferenceController}
|
||||
*/
|
||||
public interface ApplicationListBuilder {
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.settings.fuelgauge;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.TextView;
|
||||
@@ -26,7 +25,7 @@ import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
/**
|
||||
* Custom preference for displaying battery usage info as a bar and an icon on
|
||||
|
||||
@@ -21,10 +21,10 @@ import android.text.TextUtils;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settings.widget.RestrictedAppPreference;
|
||||
import com.android.settingslib.location.InjectedSetting;
|
||||
import com.android.settingslib.location.SettingsInjector;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
/**
|
||||
* Adds the preferences specified by the {@link InjectedSetting} objects to a preference group.
|
||||
|
||||
@@ -26,9 +26,9 @@ import com.android.settings.R;
|
||||
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.location.RecentLocationApps;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -43,7 +43,7 @@ public class RecentLocationRequestPreferenceController extends LocationBasePrefe
|
||||
private PreferenceCategory mCategoryRecentLocationRequests;
|
||||
private Preference mSeeAllButton;
|
||||
|
||||
/** Used in this class and {@link RecentLocationRequestSeeAllPreferenceController}*/
|
||||
/** Used in this class and {@link RecentLocationRequestSeeAllPreferenceController} */
|
||||
static class PackageEntryClickedListener implements Preference.OnPreferenceClickListener {
|
||||
private final DashboardFragment mFragment;
|
||||
private final String mPackage;
|
||||
@@ -111,7 +111,7 @@ public class RecentLocationRequestPreferenceController extends LocationBasePrefe
|
||||
|
||||
if (recentLocationRequests.size() > 3) {
|
||||
// Display the top 3 preferences to container in original order.
|
||||
for (int i = 0; i < 3; i ++) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
mCategoryRecentLocationRequests.addPreference(
|
||||
createAppPreference(prefContext, recentLocationRequests.get(i)));
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.location.RecentLocationApps;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements
|
||||
|
||||
CarrierConfigManager configManager = (CarrierConfigManager)
|
||||
getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||
PersistableBundle b = configManager.getConfig();
|
||||
PersistableBundle b = configManager.getConfigForSubId(mSubId);
|
||||
mHideImsApn = b.getBoolean(CarrierConfigManager.KEY_HIDE_IMS_APN_BOOL);
|
||||
mAllowAddingApns = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL);
|
||||
if (mAllowAddingApns) {
|
||||
|
||||
@@ -190,8 +190,6 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
|
||||
if (emptyView == null) {
|
||||
emptyView = getActivity().getLayoutInflater().inflate(
|
||||
R.layout.empty_print_state, contentRoot, false);
|
||||
ImageView iconView = (ImageView) emptyView.findViewById(R.id.icon);
|
||||
iconView.setContentDescription(getString(R.string.print_service_disabled));
|
||||
TextView textView = (TextView) emptyView.findViewById(R.id.message);
|
||||
textView.setText(R.string.print_service_disabled);
|
||||
contentRoot.addView(emptyView);
|
||||
@@ -216,8 +214,6 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
|
||||
if (emptyView == null) {
|
||||
emptyView = getActivity().getLayoutInflater().inflate(
|
||||
R.layout.empty_print_state, contentRoot, false);
|
||||
ImageView iconView = (ImageView) emptyView.findViewById(R.id.icon);
|
||||
iconView.setContentDescription(getString(R.string.print_no_printers_found));
|
||||
TextView textView = (TextView) emptyView.findViewById(R.id.message);
|
||||
textView.setText(R.string.print_no_printers_found);
|
||||
contentRoot.addView(emptyView);
|
||||
|
||||
@@ -55,8 +55,8 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.search.Indexable;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.ArrayList;
|
||||
@@ -356,7 +356,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
||||
printJob.getCreationTime(), printJob.getCreationTime(),
|
||||
DateFormat.SHORT, DateFormat.SHORT)));
|
||||
|
||||
TypedArray a = getActivity().obtainStyledAttributes(new int[] {
|
||||
TypedArray a = getActivity().obtainStyledAttributes(new int[]{
|
||||
android.R.attr.colorControlNormal});
|
||||
int tintColor = a.getColor(0, 0);
|
||||
a.recycle();
|
||||
|
||||
@@ -1,64 +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.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
public class AppPreference extends Preference {
|
||||
|
||||
private int mProgress;
|
||||
private boolean mProgressVisible;
|
||||
|
||||
public AppPreference(Context context) {
|
||||
super(context);
|
||||
setLayoutResource(R.layout.preference_app);
|
||||
}
|
||||
|
||||
public AppPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setLayoutResource(R.layout.preference_app);
|
||||
}
|
||||
|
||||
public void setProgress(int amount) {
|
||||
mProgress = amount;
|
||||
mProgressVisible = true;
|
||||
notifyChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder view) {
|
||||
super.onBindViewHolder(view);
|
||||
|
||||
view.findViewById(R.id.summary_container)
|
||||
.setVisibility(TextUtils.isEmpty(getSummary()) ? View.GONE : View.VISIBLE);
|
||||
final ProgressBar progress = (ProgressBar) view.findViewById(android.R.id.progress);
|
||||
if (mProgressVisible) {
|
||||
progress.setProgress(mProgress);
|
||||
progress.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
progress.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@ import androidx.preference.PreferenceViewHolder;
|
||||
import com.android.settings.R;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedPreferenceHelper;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
/**
|
||||
* {@link AppPreference} that implements user restriction utilities using
|
||||
|
||||
@@ -18,6 +18,8 @@ package com.android.settings.applications;
|
||||
|
||||
import static android.text.format.DateUtils.DAY_IN_MILLIS;
|
||||
|
||||
import static com.android.settings.applications.AppStateNotificationBridge
|
||||
.FILTER_APP_NOTIFICATION_BLOCKED;
|
||||
import static com.android.settings.applications.AppStateNotificationBridge
|
||||
.FILTER_APP_NOTIFICATION_FREQUENCY;
|
||||
import static com.android.settings.applications.AppStateNotificationBridge
|
||||
@@ -379,10 +381,11 @@ public class AppStateNotificationBridgeTest {
|
||||
NotificationsSentState sent = new NotificationsSentState();
|
||||
sent.lastSent = System.currentTimeMillis() - (2 * DAY_IN_MILLIS);
|
||||
|
||||
assertThat(AppStateNotificationBridge.getSummary(mContext, neverSent, true)).isEqualTo(
|
||||
mContext.getString(R.string.notifications_sent_never));
|
||||
assertThat(AppStateNotificationBridge.getSummary(mContext, sent, true).toString())
|
||||
.contains("2");
|
||||
assertThat(AppStateNotificationBridge.getSummary(
|
||||
mContext, neverSent, R.id.sort_order_recent_notification)).isEqualTo(
|
||||
mContext.getString(R.string.notifications_sent_never));
|
||||
assertThat(AppStateNotificationBridge.getSummary(
|
||||
mContext, sent, R.id.sort_order_recent_notification).toString()).contains("2");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -392,12 +395,23 @@ public class AppStateNotificationBridgeTest {
|
||||
NotificationsSentState sentOften = new NotificationsSentState();
|
||||
sentOften.avgSentDaily = 8;
|
||||
|
||||
assertThat(AppStateNotificationBridge.getSummary(mContext, sentRarely, false).toString())
|
||||
assertThat(AppStateNotificationBridge.getSummary(
|
||||
mContext, sentRarely, R.id.sort_order_frequent_notification).toString())
|
||||
.contains("1");
|
||||
assertThat(AppStateNotificationBridge.getSummary(mContext, sentOften, false).toString())
|
||||
assertThat(AppStateNotificationBridge.getSummary(
|
||||
mContext, sentOften, R.id.sort_order_frequent_notification).toString())
|
||||
.contains("8");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSummary_alpha() {
|
||||
NotificationsSentState sentRarely = new NotificationsSentState();
|
||||
sentRarely.avgSentWeekly = 1;
|
||||
assertThat(AppStateNotificationBridge.getSummary(
|
||||
mContext, sentRarely, R.id.sort_order_alpha).toString())
|
||||
.isEqualTo("");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilterRecency() {
|
||||
NotificationsSentState allowState = new NotificationsSentState();
|
||||
@@ -432,6 +446,23 @@ public class AppStateNotificationBridgeTest {
|
||||
assertFalse(FILTER_APP_NOTIFICATION_FREQUENCY.filterApp(deny));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilterBlocked() {
|
||||
NotificationsSentState allowState = new NotificationsSentState();
|
||||
allowState.blocked = true;
|
||||
AppEntry allow = mock(AppEntry.class);
|
||||
allow.extraInfo = allowState;
|
||||
|
||||
assertTrue(FILTER_APP_NOTIFICATION_BLOCKED.filterApp(allow));
|
||||
|
||||
NotificationsSentState denyState = new NotificationsSentState();
|
||||
denyState.blocked = false;
|
||||
AppEntry deny = mock(AppEntry.class);
|
||||
deny.extraInfo = denyState;
|
||||
|
||||
assertFalse(FILTER_APP_NOTIFICATION_BLOCKED.filterApp(deny));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testComparators_nullsNoCrash() {
|
||||
List<AppEntry> entries = new ArrayList<>();
|
||||
|
||||
@@ -200,13 +200,13 @@ public class ManageApplicationsTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldUseStableItemHeight_mainType_yes() {
|
||||
public void shouldUseStableItemHeight() {
|
||||
assertThat(ManageApplications.ApplicationsAdapter.shouldUseStableItemHeight(
|
||||
LIST_TYPE_MAIN))
|
||||
.isTrue();
|
||||
assertThat(ManageApplications.ApplicationsAdapter.shouldUseStableItemHeight(
|
||||
LIST_TYPE_NOTIFICATION))
|
||||
.isFalse();
|
||||
.isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -17,9 +17,10 @@ package com.android.settings.bluetooth;
|
||||
|
||||
import static android.bluetooth.BluetoothDevice.PAIRING_VARIANT_CONSENT;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.bluetooth.BluetoothClass;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -39,6 +40,8 @@ import org.robolectric.annotation.Config;
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(shadows = {ShadowBluetoothPan.class, ShadowBluetoothAdapter.class})
|
||||
public class BluetoothPairingControllerTest {
|
||||
private final BluetoothClass mBluetoothClass =
|
||||
new BluetoothClass(BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE);
|
||||
@Mock
|
||||
private BluetoothDevice mBluetoothDevice;
|
||||
private Context mContext;
|
||||
@@ -51,7 +54,7 @@ public class BluetoothPairingControllerTest {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mBluetoothDevice);
|
||||
mBluetoothPairingController = spy(new BluetoothPairingController(intent, mContext));
|
||||
mBluetoothPairingController = new BluetoothPairingController(intent, mContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -63,4 +66,36 @@ public class BluetoothPairingControllerTest {
|
||||
|
||||
verify(mBluetoothDevice).setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSetContactSharingState_permissionAllowed_setPBAPAllowed() {
|
||||
when(mBluetoothDevice.getPhonebookAccessPermission()).thenReturn(
|
||||
BluetoothDevice.ACCESS_ALLOWED);
|
||||
mBluetoothPairingController.setContactSharingState();
|
||||
mBluetoothPairingController.onDialogPositiveClick(null);
|
||||
|
||||
verify(mBluetoothDevice).setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSetContactSharingState_permissionUnknown_audioVideoHandsfree_setPBAPAllowed() {
|
||||
when(mBluetoothDevice.getPhonebookAccessPermission()).thenReturn(
|
||||
BluetoothDevice.ACCESS_UNKNOWN);
|
||||
when(mBluetoothDevice.getBluetoothClass()).thenReturn(mBluetoothClass);
|
||||
mBluetoothPairingController.setContactSharingState();
|
||||
mBluetoothPairingController.onDialogPositiveClick(null);
|
||||
|
||||
verify(mBluetoothDevice).setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSetContactSharingState_permissionRejected_setPBAPRejected() {
|
||||
when(mBluetoothDevice.getPhonebookAccessPermission()).thenReturn(
|
||||
BluetoothDevice.ACCESS_REJECTED);
|
||||
when(mBluetoothDevice.getBluetoothClass()).thenReturn(mBluetoothClass);
|
||||
mBluetoothPairingController.setContactSharingState();
|
||||
mBluetoothPairingController.onDialogPositiveClick(null);
|
||||
|
||||
verify(mBluetoothDevice).setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,20 +143,4 @@ public class SuggestionFeatureProviderImplTest {
|
||||
anyString());
|
||||
verify(mSuggestionControllerMixin).dismissSuggestion(mSuggestion);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void filterExclusiveSuggestions_shouldOnlyKeepFirst3() {
|
||||
final List<Tile> suggestions = new ArrayList<>();
|
||||
suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS));
|
||||
suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS));
|
||||
suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS));
|
||||
suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS));
|
||||
suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS));
|
||||
suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS));
|
||||
suggestions.add(new Tile(mActivityInfo, CategoryKey.CATEGORY_APPS));
|
||||
|
||||
mProvider.filterExclusiveSuggestions(suggestions);
|
||||
|
||||
assertThat(suggestions).hasSize(3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,10 +42,10 @@ import androidx.preference.PreferenceScreen;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.location.RecentLocationApps;
|
||||
import com.android.settingslib.location.RecentLocationApps.Request;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -173,7 +173,7 @@ public class RecentLocationRequestPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void onPreferenceClick_shouldLaunchAppDetails() {
|
||||
final Context context= mock(Context.class);
|
||||
final Context context = mock(Context.class);
|
||||
when(mFragment.getContext()).thenReturn(context);
|
||||
|
||||
final List<RecentLocationApps.Request> requests = new ArrayList<>();
|
||||
@@ -210,7 +210,7 @@ public class RecentLocationRequestPreferenceControllerTest {
|
||||
AppPreference appPreference = mock(AppPreference.class, "AppPreference" + i);
|
||||
doReturn(title).when(appPreference).getTitle();
|
||||
doReturn(appPreference)
|
||||
.when(mController).createAppPreference(any(Context.class), eq(req));
|
||||
.when(mController).createAppPreference(any(Context.class), eq(req));
|
||||
}
|
||||
return requests;
|
||||
}
|
||||
|
||||
@@ -32,10 +32,10 @@ import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.widget.AppPreference;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.location.RecentLocationApps;
|
||||
import com.android.settingslib.location.RecentLocationApps.Request;
|
||||
import com.android.settingslib.widget.apppreference.AppPreference;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -75,6 +75,8 @@ public class SettingsRobolectricTestRunner extends RobolectricTestRunner {
|
||||
Fs.fromURL(new URL("file:packages/apps/Settings/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/res")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/AppPreference/res/")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
Fs.fromURL(new URL("file:frameworks/base/packages/SettingsLib/HelpUtils/res/")), null));
|
||||
paths.add(new ResourcePath(null,
|
||||
|
||||
@@ -1,82 +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 static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
public class AppPreferenceTest {
|
||||
|
||||
private Context mContext;
|
||||
private View mRootView;
|
||||
private AppPreference mPref;
|
||||
private PreferenceViewHolder mHolder;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mRootView = View.inflate(mContext, R.layout.preference_app, null /* parent */);
|
||||
mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
|
||||
mPref = new AppPreference(mContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setProgress_showProgress() {
|
||||
mPref.setProgress(1);
|
||||
mPref.onBindViewHolder(mHolder);
|
||||
|
||||
assertThat(mHolder.findViewById(android.R.id.progress).getVisibility())
|
||||
.isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setSummary_showSummaryContainer() {
|
||||
mPref.setSummary("test");
|
||||
mPref.onBindViewHolder(mHolder);
|
||||
|
||||
assertThat(mHolder.findViewById(R.id.summary_container).getVisibility())
|
||||
.isEqualTo(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void noSummary_hideSummaryContainer() {
|
||||
mPref.setSummary(null);
|
||||
mPref.onBindViewHolder(mHolder);
|
||||
|
||||
assertThat(mHolder.findViewById(R.id.summary_container).getVisibility())
|
||||
.isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void foobar_testName() {
|
||||
float iconSize = mContext.getResources().getDimension(R.dimen.secondary_app_icon_size);
|
||||
assertThat(Float.floatToIntBits(iconSize)).isEqualTo(Float.floatToIntBits(32));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user