Show default app icon in default app screen.
- Renamed AdvancedAppSettings to DefaultAppSettings. - Add logic to DefaultAppPreferenceController to also display icon. - Modified DefautlAssistPrefController to suppress gear icon, and use the controller in default app setting UI to display icon. - Remove dynamic injected payment setting activity and create the setting statically in xml. - Add DefaultPaymentSettingsPreference to display default payment app title (no icon because we can't get it) Change-Id: I6b8c768da0bafe5ec9a85ba9c79c7993b449be25 Fix: 36458534 Test: robotests
This commit is contained in:
@@ -2495,11 +2495,6 @@
|
|||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter android:priority="10">
|
|
||||||
<action android:name="com.android.settings.action.SETTINGS" />
|
|
||||||
</intent-filter>
|
|
||||||
<meta-data android:name="com.android.settings.category"
|
|
||||||
android:value="com.android.settings.category.ia.apps.default" />
|
|
||||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
android:value="com.android.settings.nfc.PaymentSettings" />
|
android:value="com.android.settings.nfc.PaymentSettings" />
|
||||||
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
|
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
|
||||||
@@ -3000,7 +2995,7 @@
|
|||||||
<meta-data android:name="com.android.settings.category"
|
<meta-data android:name="com.android.settings.category"
|
||||||
android:value="com.android.settings.category.ia.apps"/>
|
android:value="com.android.settings.category.ia.apps"/>
|
||||||
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
android:value="com.android.settings.applications.AdvancedAppSettings" />
|
android:value="com.android.settings.applications.DefaultAppSettings" />
|
||||||
<meta-data android:name="com.android.settings.summary"
|
<meta-data android:name="com.android.settings.summary"
|
||||||
android:resource="@string/summary_empty"/>
|
android:resource="@string/summary_empty"/>
|
||||||
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
|
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
|
||||||
|
@@ -23,56 +23,56 @@
|
|||||||
<Preference
|
<Preference
|
||||||
android:key="assist_and_voice_input"
|
android:key="assist_and_voice_input"
|
||||||
android:title="@string/assist_and_voice_input_title"
|
android:title="@string/assist_and_voice_input_title"
|
||||||
android:fragment="com.android.settings.applications.assist.ManageAssist"
|
android:fragment="com.android.settings.applications.assist.ManageAssist" />
|
||||||
android:order="-20"/>
|
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="default_browser"
|
android:key="default_browser"
|
||||||
android:title="@string/default_browser_title"
|
android:title="@string/default_browser_title"
|
||||||
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker"
|
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker">
|
||||||
android:order="-19">
|
<extra android:name="for_work" android:value="false" />
|
||||||
<extra android:name="for_work" android:value="false"/>
|
|
||||||
</Preference>
|
</Preference>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="default_home"
|
android:key="default_home"
|
||||||
android:title="@string/home_app"
|
android:title="@string/home_app"
|
||||||
android:fragment="com.android.settings.applications.defaultapps.DefaultHomePicker"
|
android:fragment="com.android.settings.applications.defaultapps.DefaultHomePicker"
|
||||||
settings:keywords="@string/keywords_home"
|
settings:keywords="@string/keywords_home" />
|
||||||
android:order="-18"/>
|
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="default_phone_app"
|
android:key="default_phone_app"
|
||||||
android:title="@string/default_phone_title"
|
android:title="@string/default_phone_title"
|
||||||
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
|
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
|
||||||
settings:keywords="@string/keywords_default_phone_app"
|
settings:keywords="@string/keywords_default_phone_app" />
|
||||||
android:order="-17"/>
|
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="default_sms_app"
|
android:key="default_sms_app"
|
||||||
android:title="@string/sms_application_title"
|
android:title="@string/sms_application_title"
|
||||||
android:fragment="com.android.settings.applications.defaultapps.DefaultSmsPicker"
|
android:fragment="com.android.settings.applications.defaultapps.DefaultSmsPicker"
|
||||||
settings:keywords="@string/keywords_more_default_sms_app"
|
settings:keywords="@string/keywords_more_default_sms_app" />
|
||||||
android:order="-16"/>
|
|
||||||
|
<Preference
|
||||||
|
android:key="default_payment_app"
|
||||||
|
android:title="@string/nfc_payment_settings_title"
|
||||||
|
android:summary="@string/summary_placeholder"
|
||||||
|
android:fragment="com.android.settings.nfc.PaymentSettings" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="default_emergency_app"
|
android:key="default_emergency_app"
|
||||||
android:title="@string/default_emergency_app"
|
android:title="@string/default_emergency_app"
|
||||||
settings:keywords="@string/keywords_emergency_app"
|
settings:keywords="@string/keywords_emergency_app" />
|
||||||
android:order="-15"/>
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<Preference
|
<Preference
|
||||||
android:key="default_notification_asst_app"
|
android:key="default_notification_asst_app"
|
||||||
android:title="@string/default_notification_assistant"
|
android:title="@string/default_notification_assistant"
|
||||||
android:fragment="com.android.settings.applications.defaultapps.DefaultNotificationAssistantPicker"
|
android:fragment="com.android.settings.applications.defaultapps.DefaultNotificationAssistantPicker"
|
||||||
android:order="-13"/>
|
/>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="domain_urls"
|
android:key="domain_urls"
|
||||||
android:title="@string/domain_urls_title"
|
android:title="@string/domain_urls_title"
|
||||||
android:fragment="com.android.settings.applications.ManageDomainUrls"/>
|
android:fragment="com.android.settings.applications.ManageDomainUrls" />
|
||||||
|
|
||||||
<com.android.settings.WorkOnlyCategory
|
<com.android.settings.WorkOnlyCategory
|
||||||
android:key="work_defaults"
|
android:key="work_defaults"
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
android:key="work_default_browser"
|
android:key="work_default_browser"
|
||||||
android:title="@string/default_browser_title"
|
android:title="@string/default_browser_title"
|
||||||
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker">
|
android:fragment="com.android.settings.applications.defaultapps.DefaultBrowserPicker">
|
||||||
<extra android:name="for_work" android:value="true"/>
|
<extra android:name="for_work" android:value="true" />
|
||||||
</Preference>
|
</Preference>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
android:title="@string/default_phone_title"
|
android:title="@string/default_phone_title"
|
||||||
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
|
android:fragment="com.android.settings.applications.defaultapps.DefaultPhonePicker"
|
||||||
settings:keywords="@string/keywords_default_phone_app">
|
settings:keywords="@string/keywords_default_phone_app">
|
||||||
<extra android:name="for_work" android:value="true"/>
|
<extra android:name="for_work" android:value="true" />
|
||||||
</Preference>
|
</Preference>
|
||||||
|
|
||||||
</com.android.settings.WorkOnlyCategory>
|
</com.android.settings.WorkOnlyCategory>
|
||||||
|
@@ -813,13 +813,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
Settings.DateTimeSettingsActivity.class.getName()),
|
Settings.DateTimeSettingsActivity.class.getName()),
|
||||||
!UserManager.isDeviceInDemoMode(this), isAdmin)
|
!UserManager.isDeviceInDemoMode(this), isAdmin)
|
||||||
|| somethingChanged;
|
|| somethingChanged;
|
||||||
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
|
|
||||||
somethingChanged = setTileEnabled(new ComponentName(packageName,
|
|
||||||
Settings.PaymentSettingsActivity.class.getName()),
|
|
||||||
pm.hasSystemFeature(PackageManager.FEATURE_NFC)
|
|
||||||
&& pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)
|
|
||||||
&& adapter != null && adapter.isEnabled(), isAdmin)
|
|
||||||
|| somethingChanged;
|
|
||||||
|
|
||||||
somethingChanged = setTileEnabled(new ComponentName(packageName,
|
somethingChanged = setTileEnabled(new ComponentName(packageName,
|
||||||
Settings.PrintSettingsActivity.class.getName()),
|
Settings.PrintSettingsActivity.class.getName()),
|
||||||
|
@@ -22,6 +22,7 @@ import android.text.TextUtils;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.applications.assist.DefaultAssistPreferenceController;
|
||||||
import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
|
||||||
import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
|
||||||
import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
|
||||||
@@ -29,6 +30,7 @@ import com.android.settings.applications.defaultapps.DefaultPhonePreferenceContr
|
|||||||
import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController;
|
||||||
import com.android.settings.applications.defaultapps.DefaultWorkBrowserPreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultWorkBrowserPreferenceController;
|
||||||
import com.android.settings.applications.defaultapps.DefaultWorkPhonePreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultWorkPhonePreferenceController;
|
||||||
|
import com.android.settings.applications.defaultapps.DefaultPaymentSettingsPreferenceController;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
@@ -39,9 +41,9 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class AdvancedAppSettings extends DashboardFragment {
|
public class DefaultAppSettings extends DashboardFragment {
|
||||||
|
|
||||||
static final String TAG = "AdvancedAppSettings";
|
static final String TAG = "DefaultAppSettings";
|
||||||
|
|
||||||
private static final String KEY_ASSIST_VOICE_INPUT = "assist_and_voice_input";
|
private static final String KEY_ASSIST_VOICE_INPUT = "assist_and_voice_input";
|
||||||
|
|
||||||
@@ -67,6 +69,8 @@ public class AdvancedAppSettings extends DashboardFragment {
|
|||||||
|
|
||||||
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
|
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
|
||||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||||
|
controllers.add(new DefaultAssistPreferenceController(context, KEY_ASSIST_VOICE_INPUT,
|
||||||
|
false /* showSetting */));
|
||||||
controllers.add(new DefaultBrowserPreferenceController(context));
|
controllers.add(new DefaultBrowserPreferenceController(context));
|
||||||
controllers.add(new DefaultWorkBrowserPreferenceController(context));
|
controllers.add(new DefaultWorkBrowserPreferenceController(context));
|
||||||
controllers.add(new DefaultPhonePreferenceController(context));
|
controllers.add(new DefaultPhonePreferenceController(context));
|
||||||
@@ -74,6 +78,7 @@ public class AdvancedAppSettings extends DashboardFragment {
|
|||||||
controllers.add(new DefaultSmsPreferenceController(context));
|
controllers.add(new DefaultSmsPreferenceController(context));
|
||||||
controllers.add(new DefaultEmergencyPreferenceController(context));
|
controllers.add(new DefaultEmergencyPreferenceController(context));
|
||||||
controllers.add(new DefaultHomePreferenceController(context));
|
controllers.add(new DefaultHomePreferenceController(context));
|
||||||
|
controllers.add(new DefaultPaymentSettingsPreferenceController(context));
|
||||||
return controllers;
|
return controllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +105,8 @@ public class AdvancedAppSettings extends DashboardFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AbstractPreferenceController> getPreferenceControllers(Context context) {
|
public List<AbstractPreferenceController> getPreferenceControllers(
|
||||||
|
Context context) {
|
||||||
return buildPreferenceControllers(context);
|
return buildPreferenceControllers(context);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -152,7 +158,7 @@ public class AdvancedAppSettings extends DashboardFragment {
|
|||||||
@Override
|
@Override
|
||||||
public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
|
public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
|
||||||
SummaryLoader summaryLoader) {
|
SummaryLoader summaryLoader) {
|
||||||
return new AdvancedAppSettings.SummaryProvider(activity, summaryLoader);
|
return new DefaultAppSettings.SummaryProvider(activity, summaryLoader);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
@@ -1070,27 +1070,27 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
if (DefaultHomePreferenceController.hasHomePreference(mPackageName, context)) {
|
if (DefaultHomePreferenceController.hasHomePreference(mPackageName, context)) {
|
||||||
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
||||||
AdvancedAppSettings.class, "default_home", R.string.home_app,
|
DefaultAppSettings.class, "default_home", R.string.home_app,
|
||||||
R.string.configure_apps));
|
R.string.configure_apps));
|
||||||
}
|
}
|
||||||
if (DefaultBrowserPreferenceController.hasBrowserPreference(mPackageName, context)) {
|
if (DefaultBrowserPreferenceController.hasBrowserPreference(mPackageName, context)) {
|
||||||
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
||||||
AdvancedAppSettings.class, "default_browser", R.string.default_browser_title,
|
DefaultAppSettings.class, "default_browser", R.string.default_browser_title,
|
||||||
R.string.configure_apps));
|
R.string.configure_apps));
|
||||||
}
|
}
|
||||||
if (DefaultPhonePreferenceController.hasPhonePreference(mPackageName, context)) {
|
if (DefaultPhonePreferenceController.hasPhonePreference(mPackageName, context)) {
|
||||||
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
||||||
AdvancedAppSettings.class, "default_phone_app", R.string.default_phone_title,
|
DefaultAppSettings.class, "default_phone_app", R.string.default_phone_title,
|
||||||
R.string.configure_apps));
|
R.string.configure_apps));
|
||||||
}
|
}
|
||||||
if (DefaultEmergencyPreferenceController.hasEmergencyPreference(mPackageName, context)) {
|
if (DefaultEmergencyPreferenceController.hasEmergencyPreference(mPackageName, context)) {
|
||||||
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
||||||
AdvancedAppSettings.class, "default_emergency_app",
|
DefaultAppSettings.class, "default_emergency_app",
|
||||||
R.string.default_emergency_app, R.string.configure_apps));
|
R.string.default_emergency_app, R.string.configure_apps));
|
||||||
}
|
}
|
||||||
if (DefaultSmsPreferenceController.hasSmsPreference(mPackageName, context)) {
|
if (DefaultSmsPreferenceController.hasSmsPreference(mPackageName, context)) {
|
||||||
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
screen.addPreference(new ShortcutPreference(getPrefContext(),
|
||||||
AdvancedAppSettings.class, "default_sms_app", R.string.sms_application_title,
|
DefaultAppSettings.class, "default_sms_app", R.string.sms_application_title,
|
||||||
R.string.configure_apps));
|
R.string.configure_apps));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -687,7 +687,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
|||||||
ADVANCED_SETTINGS);
|
ADVANCED_SETTINGS);
|
||||||
} else {
|
} else {
|
||||||
((SettingsActivity) getActivity()).startPreferencePanel(this,
|
((SettingsActivity) getActivity()).startPreferencePanel(this,
|
||||||
AdvancedAppSettings.class.getName(), null, R.string.configure_apps,
|
DefaultAppSettings.class.getName(), null, R.string.configure_apps,
|
||||||
null, this, ADVANCED_SETTINGS);
|
null, this, ADVANCED_SETTINGS);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -23,8 +23,8 @@ import android.content.pm.PackageManager;
|
|||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.service.voice.VoiceInteractionService;
|
import android.service.voice.VoiceInteractionService;
|
||||||
import android.service.voice.VoiceInteractionServiceInfo;
|
import android.service.voice.VoiceInteractionServiceInfo;
|
||||||
|
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.internal.app.AssistUtils;
|
import com.android.internal.app.AssistUtils;
|
||||||
import com.android.settings.applications.defaultapps.DefaultAppInfo;
|
import com.android.settings.applications.defaultapps.DefaultAppInfo;
|
||||||
import com.android.settings.applications.defaultapps.DefaultAppPreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultAppPreferenceController;
|
||||||
@@ -33,17 +33,23 @@ import java.util.List;
|
|||||||
|
|
||||||
public class DefaultAssistPreferenceController extends DefaultAppPreferenceController {
|
public class DefaultAssistPreferenceController extends DefaultAppPreferenceController {
|
||||||
|
|
||||||
private static final String KEY_DEFAULT_ASSIST = "default_assist";
|
private final AssistUtils mAssistUtils;
|
||||||
|
private final boolean mShowSetting;
|
||||||
|
private final String mPrefKey;
|
||||||
|
|
||||||
private AssistUtils mAssistUtils;
|
public DefaultAssistPreferenceController(Context context, String prefKey,
|
||||||
|
boolean showSetting) {
|
||||||
public DefaultAssistPreferenceController(Context context) {
|
|
||||||
super(context);
|
super(context);
|
||||||
|
mPrefKey = prefKey;
|
||||||
|
mShowSetting = showSetting;
|
||||||
mAssistUtils = new AssistUtils(context);
|
mAssistUtils = new AssistUtils(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Intent getSettingIntent(DefaultAppInfo info) {
|
protected Intent getSettingIntent(DefaultAppInfo info) {
|
||||||
|
if (!mShowSetting) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
final ComponentName cn = mAssistUtils.getAssistComponentForUser(mUserId);
|
final ComponentName cn = mAssistUtils.getAssistComponentForUser(mUserId);
|
||||||
if (cn == null) {
|
if (cn == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -72,7 +78,7 @@ public class DefaultAssistPreferenceController extends DefaultAppPreferenceContr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPreferenceKey() {
|
public String getPreferenceKey() {
|
||||||
return KEY_DEFAULT_ASSIST;
|
return mPrefKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -71,7 +71,8 @@ public class ManageAssist extends DashboardFragment {
|
|||||||
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
|
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
|
||||||
Lifecycle lifecycle) {
|
Lifecycle lifecycle) {
|
||||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||||
controllers.add(new DefaultAssistPreferenceController(context));
|
controllers.add(new DefaultAssistPreferenceController(context, "default_assist",
|
||||||
|
true /* showSetting */));
|
||||||
controllers.add(new AssistGesturePreferenceController(context, lifecycle, KEY_ASSIST,
|
controllers.add(new AssistGesturePreferenceController(context, lifecycle, KEY_ASSIST,
|
||||||
true /* assistOnly */));
|
true /* assistOnly */));
|
||||||
controllers.add(new AssistContextPreferenceController(context, lifecycle));
|
controllers.add(new AssistContextPreferenceController(context, lifecycle));
|
||||||
@@ -81,7 +82,6 @@ public class ManageAssist extends DashboardFragment {
|
|||||||
return controllers;
|
return controllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
new BaseSearchIndexProvider() {
|
new BaseSearchIndexProvider() {
|
||||||
@Override
|
@Override
|
||||||
|
@@ -18,7 +18,6 @@ package com.android.settings.applications.defaultapps;
|
|||||||
|
|
||||||
import android.app.AppGlobals;
|
import android.app.AppGlobals;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.pm.ActivityInfo;
|
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.ComponentInfo;
|
import android.content.pm.ComponentInfo;
|
||||||
import android.content.pm.PackageItemInfo;
|
import android.content.pm.PackageItemInfo;
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.applications.defaultapps;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
@@ -54,9 +55,11 @@ public abstract class DefaultAppPreferenceController extends AbstractPreferenceC
|
|||||||
CharSequence defaultAppLabel = getDefaultAppLabel();
|
CharSequence defaultAppLabel = getDefaultAppLabel();
|
||||||
if (!TextUtils.isEmpty(defaultAppLabel)) {
|
if (!TextUtils.isEmpty(defaultAppLabel)) {
|
||||||
preference.setSummary(defaultAppLabel);
|
preference.setSummary(defaultAppLabel);
|
||||||
|
preference.setIcon(getDefaultAppIcon());
|
||||||
} else {
|
} else {
|
||||||
Log.d(TAG, "No default app");
|
Log.d(TAG, "No default app");
|
||||||
preference.setSummary(R.string.app_list_preference_none);
|
preference.setSummary(R.string.app_list_preference_none);
|
||||||
|
preference.setIcon(null);
|
||||||
}
|
}
|
||||||
mayUpdateGearIcon(app, preference);
|
mayUpdateGearIcon(app, preference);
|
||||||
}
|
}
|
||||||
@@ -84,6 +87,17 @@ public abstract class DefaultAppPreferenceController extends AbstractPreferenceC
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Drawable getDefaultAppIcon() {
|
||||||
|
if (!isAvailable()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final DefaultAppInfo app = getDefaultAppInfo();
|
||||||
|
if (app != null) {
|
||||||
|
return app.loadIcon();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public CharSequence getDefaultAppLabel() {
|
public CharSequence getDefaultAppLabel() {
|
||||||
if (!isAvailable()) {
|
if (!isAvailable()) {
|
||||||
return null;
|
return null;
|
||||||
|
@@ -21,6 +21,7 @@ import android.content.Intent;
|
|||||||
import android.content.pm.ComponentInfo;
|
import android.content.pm.ComponentInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@@ -86,6 +87,18 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
|
|||||||
return getOnlyAppLabel();
|
return getOnlyAppLabel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Drawable getDefaultAppIcon() {
|
||||||
|
if (!isAvailable()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final DefaultAppInfo defaultApp = getDefaultAppInfo();
|
||||||
|
if (defaultApp != null) {
|
||||||
|
return defaultApp.loadIcon();
|
||||||
|
}
|
||||||
|
return getOnlyAppIcon();
|
||||||
|
}
|
||||||
|
|
||||||
private List<ResolveInfo> getCandidates() {
|
private List<ResolveInfo> getCandidates() {
|
||||||
return mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL,
|
return mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL,
|
||||||
mUserId);
|
mUserId);
|
||||||
@@ -105,6 +118,18 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Drawable getOnlyAppIcon() {
|
||||||
|
final List<ResolveInfo> list = getCandidates();
|
||||||
|
if (list != null && list.size() == 1) {
|
||||||
|
final ResolveInfo info = list.get(0);
|
||||||
|
final ComponentInfo cn = info.getComponentInfo();
|
||||||
|
final String packageName = cn == null ? null : cn.packageName;
|
||||||
|
Log.d(TAG, "Getting icon for the only browser app: " + packageName);
|
||||||
|
return info.loadIcon(mPackageManager.getPackageManager());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether or not the pkg contains browser capability
|
* Whether or not the pkg contains browser capability
|
||||||
*/
|
*/
|
||||||
|
@@ -23,8 +23,6 @@ import android.content.IntentFilter;
|
|||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.support.v7.preference.Preference;
|
|
||||||
import android.text.TextUtils;
|
|
||||||
|
|
||||||
import com.android.settings.applications.PackageManagerWrapper;
|
import com.android.settings.applications.PackageManagerWrapper;
|
||||||
|
|
||||||
@@ -58,28 +56,21 @@ public class DefaultHomePreferenceController extends DefaultAppPreferenceControl
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateState(Preference preference) {
|
|
||||||
super.updateState(preference);
|
|
||||||
final DefaultAppInfo defaultApp = getDefaultAppInfo();
|
|
||||||
final CharSequence defaultAppLabel = defaultApp != null ? defaultApp.loadLabel() : null;
|
|
||||||
if (TextUtils.isEmpty(defaultAppLabel)) {
|
|
||||||
final String onlyAppLabel = getOnlyAppLabel();
|
|
||||||
if (!TextUtils.isEmpty(onlyAppLabel)) {
|
|
||||||
preference.setSummary(onlyAppLabel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DefaultAppInfo getDefaultAppInfo() {
|
protected DefaultAppInfo getDefaultAppInfo() {
|
||||||
final ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
|
final ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
|
||||||
final ComponentName currentDefaultHome = mPackageManager.getHomeActivities(homeActivities);
|
final ComponentName currentDefaultHome = mPackageManager.getHomeActivities(homeActivities);
|
||||||
|
if (currentDefaultHome != null) {
|
||||||
return new DefaultAppInfo(mPackageManager, mUserId, currentDefaultHome);
|
return new DefaultAppInfo(mPackageManager, mUserId, currentDefaultHome);
|
||||||
|
}
|
||||||
|
final ActivityInfo onlyAppInfo = getOnlyAppInfo();
|
||||||
|
if (onlyAppInfo != null) {
|
||||||
|
return new DefaultAppInfo(mPackageManager, mUserId, onlyAppInfo.getComponentName());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getOnlyAppLabel() {
|
private ActivityInfo getOnlyAppInfo() {
|
||||||
final List<ResolveInfo> homeActivities = new ArrayList<>();
|
final List<ResolveInfo> homeActivities = new ArrayList<>();
|
||||||
final List<ActivityInfo> appLabels = new ArrayList<>();
|
final List<ActivityInfo> appLabels = new ArrayList<>();
|
||||||
|
|
||||||
@@ -92,7 +83,7 @@ public class DefaultHomePreferenceController extends DefaultAppPreferenceControl
|
|||||||
appLabels.add(info);
|
appLabels.add(info);
|
||||||
}
|
}
|
||||||
return appLabels.size() == 1
|
return appLabels.size() == 1
|
||||||
? appLabels.get(0).loadLabel(mPackageManager.getPackageManager()).toString()
|
? appLabels.get(0)
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* 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.applications.defaultapps;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.nfc.NfcAdapter;
|
||||||
|
import android.os.UserManager;
|
||||||
|
import android.support.v7.preference.Preference;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
|
import com.android.settings.nfc.PaymentBackend;
|
||||||
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
|
public class DefaultPaymentSettingsPreferenceController extends AbstractPreferenceController
|
||||||
|
implements PreferenceControllerMixin {
|
||||||
|
|
||||||
|
private final NfcAdapter mNfcAdapter;
|
||||||
|
private final PackageManager mPackageManager;
|
||||||
|
private final UserManager mUserManager;
|
||||||
|
private PaymentBackend mPaymentBackend;
|
||||||
|
|
||||||
|
public DefaultPaymentSettingsPreferenceController(Context context) {
|
||||||
|
super(context);
|
||||||
|
mPackageManager = context.getPackageManager();
|
||||||
|
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||||
|
mNfcAdapter = NfcAdapter.getDefaultAdapter(mContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAvailable() {
|
||||||
|
return mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)
|
||||||
|
&& mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)
|
||||||
|
&& mUserManager.isAdminUser()
|
||||||
|
&& mNfcAdapter != null
|
||||||
|
&& mNfcAdapter.isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateState(Preference preference) {
|
||||||
|
if (mPaymentBackend == null) {
|
||||||
|
if (mNfcAdapter != null) {
|
||||||
|
mPaymentBackend = new PaymentBackend(mContext);
|
||||||
|
} else {
|
||||||
|
mPaymentBackend = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mPaymentBackend == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mPaymentBackend.refresh();
|
||||||
|
final PaymentBackend.PaymentAppInfo app = mPaymentBackend.getDefaultApp();
|
||||||
|
if (app != null) {
|
||||||
|
preference.setSummary(app.label);
|
||||||
|
} else {
|
||||||
|
preference.setSummary(R.string.app_list_preference_none);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPreferenceKey() {
|
||||||
|
return "default_payment_app";
|
||||||
|
}
|
||||||
|
}
|
@@ -41,7 +41,7 @@ import com.android.settings.accounts.AccountSyncSettings;
|
|||||||
import com.android.settings.accounts.ChooseAccountActivity;
|
import com.android.settings.accounts.ChooseAccountActivity;
|
||||||
import com.android.settings.accounts.ManagedProfileSettings;
|
import com.android.settings.accounts.ManagedProfileSettings;
|
||||||
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
||||||
import com.android.settings.applications.AdvancedAppSettings;
|
import com.android.settings.applications.DefaultAppSettings;
|
||||||
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
||||||
import com.android.settings.applications.DrawOverlayDetails;
|
import com.android.settings.applications.DrawOverlayDetails;
|
||||||
import com.android.settings.applications.ExternalSourcesDetails;
|
import com.android.settings.applications.ExternalSourcesDetails;
|
||||||
@@ -220,7 +220,7 @@ public class SettingsGateway {
|
|||||||
DrawOverlayDetails.class.getName(),
|
DrawOverlayDetails.class.getName(),
|
||||||
WriteSettingsDetails.class.getName(),
|
WriteSettingsDetails.class.getName(),
|
||||||
ExternalSourcesDetails.class.getName(),
|
ExternalSourcesDetails.class.getName(),
|
||||||
AdvancedAppSettings.class.getName(),
|
DefaultAppSettings.class.getName(),
|
||||||
WallpaperTypeSettings.class.getName(),
|
WallpaperTypeSettings.class.getName(),
|
||||||
VrListenerSettings.class.getName(),
|
VrListenerSettings.class.getName(),
|
||||||
PictureInPictureSettings.class.getName(),
|
PictureInPictureSettings.class.getName(),
|
||||||
@@ -254,7 +254,6 @@ public class SettingsGateway {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final String[] SETTINGS_FOR_RESTRICTED = {
|
public static final String[] SETTINGS_FOR_RESTRICTED = {
|
||||||
// New IA
|
|
||||||
// Home page
|
// Home page
|
||||||
Settings.NetworkDashboardActivity.class.getName(),
|
Settings.NetworkDashboardActivity.class.getName(),
|
||||||
Settings.ConnectedDeviceDashboardActivity.class.getName(),
|
Settings.ConnectedDeviceDashboardActivity.class.getName(),
|
||||||
|
@@ -22,8 +22,8 @@ import com.android.settings.DisplaySettings;
|
|||||||
import com.android.settings.SecuritySettings;
|
import com.android.settings.SecuritySettings;
|
||||||
import com.android.settings.accounts.AccountDetailDashboardFragment;
|
import com.android.settings.accounts.AccountDetailDashboardFragment;
|
||||||
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
||||||
import com.android.settings.applications.AdvancedAppSettings;
|
|
||||||
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
||||||
|
import com.android.settings.applications.DefaultAppSettings;
|
||||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
||||||
import com.android.settings.development.DevelopmentSettings;
|
import com.android.settings.development.DevelopmentSettings;
|
||||||
import com.android.settings.deviceinfo.StorageDashboardFragment;
|
import com.android.settings.deviceinfo.StorageDashboardFragment;
|
||||||
@@ -65,7 +65,7 @@ public class DashboardFragmentRegistry {
|
|||||||
CategoryKey.CATEGORY_APPS);
|
CategoryKey.CATEGORY_APPS);
|
||||||
PARENT_TO_CATEGORY_KEY_MAP.put(PowerUsageSummary.class.getName(),
|
PARENT_TO_CATEGORY_KEY_MAP.put(PowerUsageSummary.class.getName(),
|
||||||
CategoryKey.CATEGORY_BATTERY);
|
CategoryKey.CATEGORY_BATTERY);
|
||||||
PARENT_TO_CATEGORY_KEY_MAP.put(AdvancedAppSettings.class.getName(),
|
PARENT_TO_CATEGORY_KEY_MAP.put(DefaultAppSettings.class.getName(),
|
||||||
CategoryKey.CATEGORY_APPS_DEFAULT);
|
CategoryKey.CATEGORY_APPS_DEFAULT);
|
||||||
PARENT_TO_CATEGORY_KEY_MAP.put(DisplaySettings.class.getName(),
|
PARENT_TO_CATEGORY_KEY_MAP.put(DisplaySettings.class.getName(),
|
||||||
CategoryKey.CATEGORY_DISPLAY);
|
CategoryKey.CATEGORY_DISPLAY);
|
||||||
|
@@ -42,7 +42,7 @@ public class PaymentBackend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class PaymentAppInfo {
|
public static class PaymentAppInfo {
|
||||||
CharSequence label;
|
public CharSequence label;
|
||||||
CharSequence description;
|
CharSequence description;
|
||||||
Drawable banner;
|
Drawable banner;
|
||||||
boolean isDefault;
|
boolean isDefault;
|
||||||
|
@@ -16,12 +16,10 @@
|
|||||||
|
|
||||||
package com.android.settings.nfc;
|
package com.android.settings.nfc;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.nfc.NfcAdapter;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.preference.PreferenceManager;
|
import android.support.v7.preference.PreferenceManager;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
@@ -34,8 +32,6 @@ import android.view.ViewGroup;
|
|||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
|
||||||
import com.android.settings.nfc.PaymentBackend.PaymentAppInfo;
|
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchIndexableRaw;
|
import com.android.settings.search.SearchIndexableRaw;
|
||||||
@@ -109,40 +105,6 @@ public class PaymentSettings extends SettingsPreferenceFragment implements Index
|
|||||||
menuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_NEVER);
|
menuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class SummaryProvider implements SummaryLoader.SummaryProvider {
|
|
||||||
|
|
||||||
private final Context mContext;
|
|
||||||
private final SummaryLoader mSummaryLoader;
|
|
||||||
|
|
||||||
public SummaryProvider(Context context, SummaryLoader summaryLoader) {
|
|
||||||
mContext = context;
|
|
||||||
mSummaryLoader = summaryLoader;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setListening(boolean listening) {
|
|
||||||
if (listening && NfcAdapter.getDefaultAdapter(mContext) != null) {
|
|
||||||
PaymentBackend paymentBackend = new PaymentBackend(mContext);
|
|
||||||
paymentBackend.refresh();
|
|
||||||
PaymentAppInfo app = paymentBackend.getDefaultApp();
|
|
||||||
String summary = null;
|
|
||||||
if (app != null) {
|
|
||||||
summary = mContext.getString(R.string.payment_summary, app.label);
|
|
||||||
}
|
|
||||||
mSummaryLoader.setSummary(this, summary);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
|
|
||||||
= new SummaryLoader.SummaryProviderFactory() {
|
|
||||||
@Override
|
|
||||||
public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
|
|
||||||
SummaryLoader summaryLoader) {
|
|
||||||
return new SummaryProvider(activity, summaryLoader);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
new BaseSearchIndexProvider() {
|
new BaseSearchIndexProvider() {
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,8 +20,8 @@ import android.provider.SearchIndexableResource;
|
|||||||
import android.support.annotation.DrawableRes;
|
import android.support.annotation.DrawableRes;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.support.annotation.XmlRes;
|
import android.support.annotation.XmlRes;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.android.settings.DateTimeSettings;
|
import com.android.settings.DateTimeSettings;
|
||||||
import com.android.settings.DeviceInfoSettings;
|
import com.android.settings.DeviceInfoSettings;
|
||||||
import com.android.settings.DisplaySettings;
|
import com.android.settings.DisplaySettings;
|
||||||
@@ -34,15 +34,14 @@ import com.android.settings.accessibility.AccessibilitySettings;
|
|||||||
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
|
import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment;
|
||||||
import com.android.settings.accessibility.MagnificationPreferenceFragment;
|
import com.android.settings.accessibility.MagnificationPreferenceFragment;
|
||||||
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
import com.android.settings.accounts.UserAndAccountDashboardFragment;
|
||||||
import com.android.settings.applications.AdvancedAppSettings;
|
|
||||||
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
import com.android.settings.applications.AppAndNotificationDashboardFragment;
|
||||||
|
import com.android.settings.applications.DefaultAppSettings;
|
||||||
import com.android.settings.applications.SpecialAccessSettings;
|
import com.android.settings.applications.SpecialAccessSettings;
|
||||||
import com.android.settings.applications.assist.ManageAssist;
|
import com.android.settings.applications.assist.ManageAssist;
|
||||||
import com.android.settings.backup.BackupSettingsActivity;
|
import com.android.settings.backup.BackupSettingsActivity;
|
||||||
import com.android.settings.backup.BackupSettingsFragment;
|
import com.android.settings.backup.BackupSettingsFragment;
|
||||||
import com.android.settings.bluetooth.BluetoothSettings;
|
import com.android.settings.bluetooth.BluetoothSettings;
|
||||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
||||||
import com.android.settings.support.SupportDashboardActivity;
|
|
||||||
import com.android.settings.datausage.DataUsageMeteredSettings;
|
import com.android.settings.datausage.DataUsageMeteredSettings;
|
||||||
import com.android.settings.datausage.DataUsageSummary;
|
import com.android.settings.datausage.DataUsageSummary;
|
||||||
import com.android.settings.development.DevelopmentSettings;
|
import com.android.settings.development.DevelopmentSettings;
|
||||||
@@ -78,6 +77,7 @@ import com.android.settings.notification.ZenModeVisualInterruptionSettings;
|
|||||||
import com.android.settings.print.PrintSettingsFragment;
|
import com.android.settings.print.PrintSettingsFragment;
|
||||||
import com.android.settings.security.LockscreenDashboardFragment;
|
import com.android.settings.security.LockscreenDashboardFragment;
|
||||||
import com.android.settings.sim.SimSettings;
|
import com.android.settings.sim.SimSettings;
|
||||||
|
import com.android.settings.support.SupportDashboardActivity;
|
||||||
import com.android.settings.system.ResetDashboardFragment;
|
import com.android.settings.system.ResetDashboardFragment;
|
||||||
import com.android.settings.system.SystemDashboardFragment;
|
import com.android.settings.system.SystemDashboardFragment;
|
||||||
import com.android.settings.tts.TtsEnginePreferenceFragment;
|
import com.android.settings.tts.TtsEnginePreferenceFragment;
|
||||||
@@ -101,7 +101,7 @@ public final class SearchIndexableResources {
|
|||||||
@XmlRes
|
@XmlRes
|
||||||
public static final int NO_DATA_RES_ID = 0;
|
public static final int NO_DATA_RES_ID = 0;
|
||||||
|
|
||||||
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
@VisibleForTesting
|
||||||
static final HashMap<String, SearchIndexableResource> sResMap = new HashMap<>();
|
static final HashMap<String, SearchIndexableResource> sResMap = new HashMap<>();
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -156,7 +156,7 @@ public final class SearchIndexableResources {
|
|||||||
addIndex(PowerUsageAdvanced.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
|
addIndex(PowerUsageAdvanced.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
|
||||||
addIndex(BatterySaverSettings.class,
|
addIndex(BatterySaverSettings.class,
|
||||||
R.xml.battery_saver_settings, R.drawable.ic_settings_battery);
|
R.xml.battery_saver_settings, R.drawable.ic_settings_battery);
|
||||||
addIndex(AdvancedAppSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
|
addIndex(DefaultAppSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
|
||||||
addIndex(ManageAssist.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
|
addIndex(ManageAssist.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
|
||||||
addIndex(SpecialAccessSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
|
addIndex(SpecialAccessSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
|
||||||
addIndex(UserSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_multiuser);
|
addIndex(UserSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_multiuser);
|
||||||
@@ -201,7 +201,7 @@ public final class SearchIndexableResources {
|
|||||||
addIndex(
|
addIndex(
|
||||||
TtsEnginePreferenceFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
|
TtsEnginePreferenceFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
|
||||||
addIndex(LockscreenDashboardFragment.class, R.xml.security_lockscreen_settings,
|
addIndex(LockscreenDashboardFragment.class, R.xml.security_lockscreen_settings,
|
||||||
R.drawable.ic_settings_security);
|
R.drawable.ic_settings_security);
|
||||||
addIndex(MagnificationPreferenceFragment.class, NO_DATA_RES_ID,
|
addIndex(MagnificationPreferenceFragment.class, NO_DATA_RES_ID,
|
||||||
R.drawable.ic_settings_accessibility);
|
R.drawable.ic_settings_accessibility);
|
||||||
addIndex(AccessibilityShortcutPreferenceFragment.class, NO_DATA_RES_ID,
|
addIndex(AccessibilityShortcutPreferenceFragment.class, NO_DATA_RES_ID,
|
||||||
|
@@ -17,31 +17,30 @@
|
|||||||
package com.android.settings.security;
|
package com.android.settings.security;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.IContentProvider;
|
import android.content.IContentProvider;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settings.trustagent.TrustAgentManager;
|
|
||||||
import com.android.settings.trustagent.TrustAgentManagerImpl;
|
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.support.v4.content.ContextCompat;
|
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.trustagent.TrustAgentManager;
|
||||||
|
import com.android.settings.trustagent.TrustAgentManagerImpl;
|
||||||
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
import com.android.settingslib.drawer.TileUtils;
|
import com.android.settingslib.drawer.TileUtils;
|
||||||
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
/** Implementation for {@code SecurityFeatureProvider}. */
|
/** Implementation for {@code SecurityFeatureProvider}. */
|
||||||
public class SecurityFeatureProviderImpl implements SecurityFeatureProvider {
|
public class SecurityFeatureProviderImpl implements SecurityFeatureProvider {
|
||||||
|
@@ -26,7 +26,6 @@ public class WebViewAppPreferenceController extends DefaultAppPreferenceControll
|
|||||||
|
|
||||||
private static final String WEBVIEW_APP_KEY = "select_webview_provider";
|
private static final String WEBVIEW_APP_KEY = "select_webview_provider";
|
||||||
|
|
||||||
private final Context mContext;
|
|
||||||
private final WebViewUpdateServiceWrapper mWebViewUpdateServiceWrapper;
|
private final WebViewUpdateServiceWrapper mWebViewUpdateServiceWrapper;
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
|
|
||||||
@@ -37,7 +36,6 @@ public class WebViewAppPreferenceController extends DefaultAppPreferenceControll
|
|||||||
public WebViewAppPreferenceController(Context context,
|
public WebViewAppPreferenceController(Context context,
|
||||||
WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) {
|
WebViewUpdateServiceWrapper webviewUpdateServiceWrapper) {
|
||||||
super(context);
|
super(context);
|
||||||
mContext = context;
|
|
||||||
mWebViewUpdateServiceWrapper = webviewUpdateServiceWrapper;
|
mWebViewUpdateServiceWrapper = webviewUpdateServiceWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -32,7 +32,7 @@ import org.junit.Test;
|
|||||||
* Test for Advanced App preferences.
|
* Test for Advanced App preferences.
|
||||||
*/
|
*/
|
||||||
@SmallTest
|
@SmallTest
|
||||||
public class AdvancedAppSettingsTest extends InstrumentationTestCase {
|
public class DefaultAppSettingsTest extends InstrumentationTestCase {
|
||||||
|
|
||||||
private UiDevice mDevice;
|
private UiDevice mDevice;
|
||||||
private Context mTargetContext;
|
private Context mTargetContext;
|
@@ -16,18 +16,29 @@
|
|||||||
|
|
||||||
package com.android.settings.applications;
|
package com.android.settings.applications;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.mockito.Matchers.anyInt;
|
||||||
|
import static org.mockito.Matchers.anyString;
|
||||||
|
import static org.mockito.Matchers.eq;
|
||||||
|
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
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.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
|
||||||
import com.android.settings.applications.defaultapps.DefaultPhonePreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultPhonePreferenceController;
|
||||||
import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController;
|
import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.XmlTestUtils;
|
import com.android.settings.testutils.XmlTestUtils;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -40,31 +51,19 @@ import org.robolectric.util.ReflectionHelpers;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
|
||||||
import static org.mockito.Matchers.anyString;
|
|
||||||
import static org.mockito.Matchers.eq;
|
|
||||||
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.spy;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class AdvancedAppSettingsTest {
|
public class DefaultAppSettingsTest {
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
private AdvancedAppSettings mFragment;
|
private DefaultAppSettings mFragment;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mFragment = new AdvancedAppSettings();
|
mFragment = new DefaultAppSettings();
|
||||||
mFragment.onAttach(mContext);
|
mFragment.onAttach(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,8 +76,8 @@ public class AdvancedAppSettingsTest {
|
|||||||
@Test
|
@Test
|
||||||
public void setListening_shouldUpdateSummary() {
|
public void setListening_shouldUpdateSummary() {
|
||||||
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
|
final SummaryLoader summaryLoader = mock(SummaryLoader.class);
|
||||||
final AdvancedAppSettings.SummaryProvider summaryProvider =
|
final DefaultAppSettings.SummaryProvider summaryProvider =
|
||||||
new AdvancedAppSettings.SummaryProvider(mContext, summaryLoader);
|
new DefaultAppSettings.SummaryProvider(mContext, summaryLoader);
|
||||||
final DefaultSmsPreferenceController defaultSms =
|
final DefaultSmsPreferenceController defaultSms =
|
||||||
mock(DefaultSmsPreferenceController.class);
|
mock(DefaultSmsPreferenceController.class);
|
||||||
final DefaultBrowserPreferenceController defaultBrowser =
|
final DefaultBrowserPreferenceController defaultBrowser =
|
||||||
@@ -149,6 +148,7 @@ public class AdvancedAppSettingsTest {
|
|||||||
public void testNonIndexableKeys_existInXmlLayout() {
|
public void testNonIndexableKeys_existInXmlLayout() {
|
||||||
final Context context = spy(RuntimeEnvironment.application);
|
final Context context = spy(RuntimeEnvironment.application);
|
||||||
final Context mockContext = mock(Context.class);
|
final Context mockContext = mock(Context.class);
|
||||||
|
when(mockContext.getApplicationContext()).thenReturn(mockContext);
|
||||||
final UserManager userManager = mock(UserManager.class, RETURNS_DEEP_STUBS);
|
final UserManager userManager = mock(UserManager.class, RETURNS_DEEP_STUBS);
|
||||||
|
|
||||||
when(mockContext.getSystemService(Context.USER_SERVICE))
|
when(mockContext.getSystemService(Context.USER_SERVICE))
|
||||||
@@ -159,10 +159,10 @@ public class AdvancedAppSettingsTest {
|
|||||||
.thenReturn(mock(TelephonyManager.class));
|
.thenReturn(mock(TelephonyManager.class));
|
||||||
when(mockContext.getPackageManager())
|
when(mockContext.getPackageManager())
|
||||||
.thenReturn(mock(PackageManager.class));
|
.thenReturn(mock(PackageManager.class));
|
||||||
final List<String> niks = AdvancedAppSettings.SEARCH_INDEX_DATA_PROVIDER
|
final List<String> niks = DefaultAppSettings.SEARCH_INDEX_DATA_PROVIDER
|
||||||
.getNonIndexableKeys(mockContext);
|
.getNonIndexableKeys(mockContext);
|
||||||
|
|
||||||
final int xmlId = (new AdvancedAppSettings()).getPreferenceScreenResId();
|
final int xmlId = (new DefaultAppSettings()).getPreferenceScreenResId();
|
||||||
|
|
||||||
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);
|
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);
|
||||||
|
|
@@ -16,6 +16,16 @@
|
|||||||
|
|
||||||
package com.android.settings.applications.assist;
|
package com.android.settings.applications.assist;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Matchers.anyBoolean;
|
||||||
|
import static org.mockito.Matchers.anyInt;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verifyZeroInteractions;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.app.SearchManager;
|
import android.app.SearchManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
@@ -28,33 +38,29 @@ import android.content.pm.ResolveInfo;
|
|||||||
import android.content.pm.ServiceInfo;
|
import android.content.pm.ServiceInfo;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.internal.app.AssistUtils;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.applications.defaultapps.DefaultAppInfo;
|
import com.android.settings.applications.defaultapps.DefaultAppInfo;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import java.util.ArrayList;
|
||||||
import static org.mockito.Matchers.any;
|
import java.util.List;
|
||||||
import static org.mockito.Matchers.anyBoolean;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.spy;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class DefaultAssistPreferenceControllerTest {
|
public class DefaultAssistPreferenceControllerTest {
|
||||||
|
|
||||||
|
private static final String TEST_KEY = "test_pref_key";
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -66,7 +72,8 @@ public class DefaultAssistPreferenceControllerTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mController = new DefaultAssistPreferenceController(mContext);
|
mController = new DefaultAssistPreferenceController(mContext, TEST_KEY,
|
||||||
|
true /* showSetting */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -74,6 +81,12 @@ public class DefaultAssistPreferenceControllerTest {
|
|||||||
assertThat(mController.isAvailable()).isTrue();
|
assertThat(mController.isAvailable()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getPrefKey_shouldReturnKey() {
|
||||||
|
assertThat(mController.getPreferenceKey())
|
||||||
|
.isEqualTo(TEST_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Config(shadows = {ShadowSecureSettings.class})
|
@Config(shadows = {ShadowSecureSettings.class})
|
||||||
public void getDefaultAppInfo_hasDefaultAssist_shouldReturnKey() {
|
public void getDefaultAppInfo_hasDefaultAssist_shouldReturnKey() {
|
||||||
@@ -89,15 +102,15 @@ public class DefaultAssistPreferenceControllerTest {
|
|||||||
final String flattenKey = "com.android.settings/assist";
|
final String flattenKey = "com.android.settings/assist";
|
||||||
Settings.Secure.putString(null, Settings.Secure.ASSISTANT, flattenKey);
|
Settings.Secure.putString(null, Settings.Secure.ASSISTANT, flattenKey);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
DefaultAssistPreferenceController controller =
|
DefaultAssistPreferenceController controller = spy(
|
||||||
spy(new DefaultAssistPreferenceController(mContext));
|
new DefaultAssistPreferenceController(mContext, TEST_KEY, true /* showSetting */));
|
||||||
final ResolveInfo resolveInfo = new ResolveInfo();
|
final ResolveInfo resolveInfo = new ResolveInfo();
|
||||||
resolveInfo.activityInfo = new ActivityInfo();
|
resolveInfo.activityInfo = new ActivityInfo();
|
||||||
resolveInfo.activityInfo.name = "assist";
|
resolveInfo.activityInfo.name = "assist";
|
||||||
resolveInfo.activityInfo.applicationInfo = new ApplicationInfo();
|
resolveInfo.activityInfo.applicationInfo = new ApplicationInfo();
|
||||||
resolveInfo.activityInfo.applicationInfo.packageName = "com.android.settings";
|
resolveInfo.activityInfo.applicationInfo.packageName = "com.android.settings";
|
||||||
when(mPackageManager.resolveActivityAsUser(any(Intent.class), anyInt(), anyInt()))
|
when(mPackageManager.resolveActivityAsUser(any(Intent.class), anyInt(), anyInt()))
|
||||||
.thenReturn(resolveInfo);
|
.thenReturn(resolveInfo);
|
||||||
when(mContext.getSystemService(Context.SEARCH_SERVICE)).thenReturn(mSearchManager);
|
when(mContext.getSystemService(Context.SEARCH_SERVICE)).thenReturn(mSearchManager);
|
||||||
when(mSearchManager.getAssistIntent(anyBoolean())).thenReturn(mock(Intent.class));
|
when(mSearchManager.getAssistIntent(anyBoolean())).thenReturn(mock(Intent.class));
|
||||||
final ServiceInfo serviceInfo = new ServiceInfo();
|
final ServiceInfo serviceInfo = new ServiceInfo();
|
||||||
@@ -107,9 +120,21 @@ public class DefaultAssistPreferenceControllerTest {
|
|||||||
services.add(resolveInfo);
|
services.add(resolveInfo);
|
||||||
when(mPackageManager.queryIntentServices(any(Intent.class), anyInt())).thenReturn(services);
|
when(mPackageManager.queryIntentServices(any(Intent.class), anyInt())).thenReturn(services);
|
||||||
doReturn(null).when(controller).getAssistSettingsActivity(
|
doReturn(null).when(controller).getAssistSettingsActivity(
|
||||||
ComponentName.unflattenFromString(flattenKey), resolveInfo, mPackageManager);
|
ComponentName.unflattenFromString(flattenKey), resolveInfo, mPackageManager);
|
||||||
|
|
||||||
controller.getSettingIntent(null);
|
controller.getSettingIntent(null);
|
||||||
// should not crash
|
// should not crash
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSettingIntent_doNotShowSetting_shouldNotTryToGetSettingIntent() {
|
||||||
|
final AssistUtils assistUtils = mock(AssistUtils.class);
|
||||||
|
final DefaultAssistPreferenceController controller = new DefaultAssistPreferenceController(
|
||||||
|
mContext, TEST_KEY, false /* showSetting */);
|
||||||
|
ReflectionHelpers.setField(controller, "mAssistUtils", assistUtils);
|
||||||
|
|
||||||
|
controller.getSettingIntent(null);
|
||||||
|
|
||||||
|
verifyZeroInteractions(assistUtils);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,14 +17,22 @@
|
|||||||
package com.android.settings.applications.defaultapps;
|
package com.android.settings.applications.defaultapps;
|
||||||
|
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.mockito.Matchers.anyList;
|
||||||
|
import static org.mockito.Mockito.atLeastOnce;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.applications.PackageManagerWrapper;
|
import com.android.settings.applications.PackageManagerWrapper;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -35,14 +43,6 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
import static org.mockito.Matchers.anyList;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.spy;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class DefaultHomePreferenceControllerTest {
|
public class DefaultHomePreferenceControllerTest {
|
||||||
@@ -79,11 +79,10 @@ public class DefaultHomePreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateState_noDefaultApp_shouldAskPackageManagerForOnlyApp() {
|
public void updateState_noDefaultApp_shouldAskPackageManagerForOnlyApp() {
|
||||||
doReturn(null).when(mController).getDefaultAppInfo();
|
when(mPackageManager.getHomeActivities(anyList())).thenReturn(null);
|
||||||
|
|
||||||
mController.updateState(mock(Preference.class));
|
mController.updateState(mock(Preference.class));
|
||||||
|
|
||||||
verify(mPackageManager).getHomeActivities(anyList());
|
verify(mPackageManager, atLeastOnce()).getHomeActivities(anyList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* 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.applications.defaultapps;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.mockito.Matchers.anyString;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.nfc.NfcAdapter;
|
||||||
|
import android.os.UserManager;
|
||||||
|
import android.support.v7.preference.Preference;
|
||||||
|
|
||||||
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.nfc.PaymentBackend;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
|
public class DefaultPaymentSettingsPreferenceControllerTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NfcAdapter mNfcAdapter;
|
||||||
|
@Mock
|
||||||
|
private Context mContext;
|
||||||
|
@Mock
|
||||||
|
private UserManager mUserManager;
|
||||||
|
@Mock
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
@Mock
|
||||||
|
private PaymentBackend mPaymentBackend;
|
||||||
|
|
||||||
|
private DefaultPaymentSettingsPreferenceController mController;
|
||||||
|
private Preference mPreference;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
|
when(mContext.getApplicationContext()).thenReturn(mContext);
|
||||||
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
||||||
|
mController = new DefaultPaymentSettingsPreferenceController(mContext);
|
||||||
|
ReflectionHelpers.setField(mController, "mNfcAdapter", mNfcAdapter);
|
||||||
|
|
||||||
|
mPreference = new Preference(RuntimeEnvironment.application);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_hasNfc_shouldReturnTrue() {
|
||||||
|
when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true);
|
||||||
|
when(mUserManager.isAdminUser()).thenReturn(true);
|
||||||
|
when(mNfcAdapter.isEnabled()).thenReturn(true);
|
||||||
|
|
||||||
|
assertThat(mController.isAvailable()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_noNfcAdapter_shouldReturnFalse() {
|
||||||
|
when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true);
|
||||||
|
when(mUserManager.isAdminUser()).thenReturn(true);
|
||||||
|
ReflectionHelpers.setField(mController, "mNfcAdapter", null);
|
||||||
|
|
||||||
|
assertThat(mController.isAvailable()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateState_shouldSetSummaryToDefaultPaymentApp() {
|
||||||
|
final PaymentBackend.PaymentAppInfo defaultApp = mock(PaymentBackend.PaymentAppInfo.class);
|
||||||
|
defaultApp.label = "test_payment_app";
|
||||||
|
when(mPaymentBackend.getDefaultApp()).thenReturn(defaultApp);
|
||||||
|
ReflectionHelpers.setField(mController, "mPaymentBackend", mPaymentBackend);
|
||||||
|
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
verify(mPaymentBackend).refresh();
|
||||||
|
assertThat(mPreference.getSummary()).isEqualTo(defaultApp.label);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user