Merge "Update activity titles for fragments without preference screen."
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index bac0a61..96cc390 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -21,7 +21,7 @@
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AuthenticatorDescription;
-import android.annotation.StringRes;
+import android.annotation.Nullable;
import android.app.Activity;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -39,7 +39,6 @@
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.telephony.euicc.EuiccManager;
-import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -54,6 +53,7 @@
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtils;
@@ -70,7 +70,7 @@
*
* This is the initial screen.
*/
-public class MasterClear extends OptionsMenuFragment {
+public class MasterClear extends InstrumentedPreferenceFragment {
private static final String TAG = "MasterClear";
private static final int KEYGUARD_REQUEST = 55;
@@ -93,9 +93,11 @@
};
@Override
- @StringRes
- protected int getTitle() {
- return R.string.master_clear_title;
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.master_clear_title);
+ }
}
/**
diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
index 39bf01a..9b324c3 100644
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -33,6 +33,7 @@
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settingslib.RestrictedLockUtils;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -47,7 +48,7 @@
*
* This is the confirmation screen.
*/
-public class MasterClearConfirm extends OptionsMenuFragment {
+public class MasterClearConfirm extends InstrumentedPreferenceFragment {
private View mContentView;
private boolean mEraseSdCard;
diff --git a/src/com/android/settings/OptionsMenuFragment.java b/src/com/android/settings/OptionsMenuFragment.java
deleted file mode 100644
index c8dcc8e..0000000
--- a/src/com/android/settings/OptionsMenuFragment.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2016 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;
-
-import android.os.Bundle;
-
-import com.android.settings.core.InstrumentedPreferenceFragment;
-
-/**
- * Base class for a fragment that has the options menu.
- * SettingsPreferenceFragment automatically sets this, but some activities do not use
- * preferences, and we need to call setHasOptionsMenu(true) for the back button on action bar.
- * For preference fragments, use SettingsPreferenceFragment.
- */
-public abstract class OptionsMenuFragment extends InstrumentedPreferenceFragment {
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- setHasOptionsMenu(true);
- }
-}
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index b5b8a18..dc89d05 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -16,7 +16,7 @@
package com.android.settings;
-import android.annotation.StringRes;
+import android.annotation.Nullable;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
@@ -35,6 +35,7 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.telephony.PhoneConstants;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtils;
@@ -52,7 +53,7 @@
*
* This is the initial screen.
*/
-public class ResetNetwork extends OptionsMenuFragment {
+public class ResetNetwork extends InstrumentedPreferenceFragment {
private static final String TAG = "ResetNetwork";
// Arbitrary to avoid conficts
@@ -65,9 +66,11 @@
private Button mInitiateButton;
@Override
- @StringRes
- protected int getTitle() {
- return R.string.reset_network_title;
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.reset_network_title);
+ }
}
/**
diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java
index f70d3c2..58b8289 100644
--- a/src/com/android/settings/ResetNetworkConfirm.java
+++ b/src/com/android/settings/ResetNetworkConfirm.java
@@ -38,6 +38,7 @@
import com.android.ims.ImsManager;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.telephony.PhoneConstants;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settingslib.RestrictedLockUtils;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -52,7 +53,7 @@
*
* This is the confirmation screen.
*/
-public class ResetNetworkConfirm extends OptionsMenuFragment {
+public class ResetNetworkConfirm extends InstrumentedPreferenceFragment {
private View mContentView;
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
diff --git a/src/com/android/settings/TrustedCredentialsSettings.java b/src/com/android/settings/TrustedCredentialsSettings.java
index 12524b9..479a914 100644
--- a/src/com/android/settings/TrustedCredentialsSettings.java
+++ b/src/com/android/settings/TrustedCredentialsSettings.java
@@ -20,7 +20,6 @@
import static android.widget.LinearLayout.LayoutParams.WRAP_CONTENT;
import android.animation.LayoutTransition;
-import android.annotation.StringRes;
import android.annotation.UiThread;
import android.app.Activity;
import android.app.KeyguardManager;
@@ -66,6 +65,7 @@
import com.android.internal.app.UnlaunchableAppActivity;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
@@ -75,7 +75,7 @@
import java.util.Set;
import java.util.function.IntConsumer;
-public class TrustedCredentialsSettings extends OptionsMenuFragment
+public class TrustedCredentialsSettings extends InstrumentedPreferenceFragment
implements TrustedCredentialsDialogBuilder.DelegateInterface {
public static final String ARG_SHOW_NEW_FOR_USER = "ARG_SHOW_NEW_FOR_USER";
@@ -92,12 +92,6 @@
private static final int REQUEST_CONFIRM_CREDENTIALS = 1;
@Override
- @StringRes
- protected int getTitle() {
- return R.string.trusted_credentials;
- }
-
- @Override
public int getMetricsCategory() {
return MetricsEvent.TRUSTED_CREDENTIALS;
}
@@ -183,10 +177,11 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mUserManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
- mKeyguardManager = (KeyguardManager) getActivity()
+ final Activity activity = getActivity();
+ mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
+ mKeyguardManager = (KeyguardManager) activity
.getSystemService(Context.KEYGUARD_SERVICE);
- mTrustAllCaUserId = getActivity().getIntent().getIntExtra(ARG_SHOW_NEW_FOR_USER,
+ mTrustAllCaUserId = activity.getIntent().getIntExtra(ARG_SHOW_NEW_FOR_USER,
UserHandle.USER_NULL);
mConfirmedCredentialUsers = new ArraySet<>(2);
mConfirmingCredentialUser = UserHandle.USER_NULL;
@@ -206,7 +201,11 @@
filter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE);
filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE);
filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNLOCKED);
- getActivity().registerReceiver(mWorkProfileChangedReceiver, filter);
+ activity.registerReceiver(mWorkProfileChangedReceiver, filter);
+
+ if (usePreferenceScreenTitle()) {
+ activity.setTitle(R.string.trusted_credentials);
+ }
}
@Override
diff --git a/src/com/android/settings/UserCredentialsSettings.java b/src/com/android/settings/UserCredentialsSettings.java
index f34b7a7..f8966a5 100644
--- a/src/com/android/settings/UserCredentialsSettings.java
+++ b/src/com/android/settings/UserCredentialsSettings.java
@@ -18,7 +18,6 @@
import android.annotation.LayoutRes;
import android.annotation.Nullable;
-import android.annotation.StringRes;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
@@ -86,9 +85,11 @@
}
@Override
- @StringRes
- protected int getTitle() {
- return R.string.user_credentials;
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.user_credentials);
+ }
}
protected void announceRemoval(String alias) {
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 0fbf5fa..91cde7e 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -119,6 +119,7 @@
static final String EXTRA_PREFERENCE_KEY = "preference_key";
static final String EXTRA_CHECKED = "checked";
static final String EXTRA_TITLE = "title";
+ static final String EXTRA_TITLE_RES = "title_res";
static final String EXTRA_RESOLVE_INFO = "resolve_info";
static final String EXTRA_SUMMARY = "summary";
static final String EXTRA_SETTINGS_TITLE = "settings_title";
diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
index 9715559..7ad4d41 100644
--- a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
@@ -141,6 +141,10 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED);
extras.putString(AccessibilitySettings.EXTRA_TITLE, getString(
R.string.accessibility_screen_magnification_navbar_title));
+ if (usePreferenceScreenTitle()) {
+ extras.putInt(AccessibilitySettings.EXTRA_TITLE_RES,
+ R.string.accessibility_screen_magnification_navbar_title);
+ }
extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY,
getActivity().getResources().getText(
R.string.accessibility_screen_magnification_navbar_summary));
@@ -190,6 +194,10 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
extras.putString(AccessibilitySettings.EXTRA_TITLE, context.getString(
R.string.accessibility_screen_magnification_gestures_title));
+ if (usePreferenceScreenTitle()) {
+ extras.putInt(AccessibilitySettings.EXTRA_TITLE_RES,
+ R.string.accessibility_screen_magnification_gestures_title);
+ }
extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, context.getResources().getText(
R.string.accessibility_screen_magnification_summary));
extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED,
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 213e585..bb2959f 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -21,16 +21,8 @@
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
-import android.support.v7.preference.PreferenceViewHolder;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
import android.view.View;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityManager;
-import android.widget.TextView;
-import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.widget.SwitchBar;
@@ -104,13 +96,6 @@
// Implement this to reset a checked listener.
}
- /**
- * Get the res id for static preference xml for this fragment.
- */
- protected int getPreferenceScreenResId() {
- return -1;
- }
-
private void installActionBarToggleSwitch() {
mSwitchBar.show();
onInstallSwitchBarToggleSwitch();
diff --git a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
index dbd269a..3e1e732 100644
--- a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
@@ -17,7 +17,6 @@
package com.android.settings.accessibility;
import android.annotation.Nullable;
-import android.annotation.StringRes;
import android.content.ContentResolver;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -53,12 +52,9 @@
for (int i = 0; i < strEntryValues.length; ++i) {
mValues[i] = Float.parseFloat(strEntryValues[i]);
}
- }
-
- @Override
- @StringRes
- protected int getTitle() {
- return R.string.title_font_size;
+ if (usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.title_font_size);
+ }
}
@Override
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index 033d81b..9bc20b5 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -217,6 +217,14 @@
if (arguments.containsKey(AccessibilitySettings.EXTRA_CHECKED)) {
mInitialSetting = arguments.getBoolean(AccessibilitySettings.EXTRA_CHECKED);
}
+
+ if (usePreferenceScreenTitle()
+ && arguments.containsKey(AccessibilitySettings.EXTRA_TITLE_RES)) {
+ final int titleRes = arguments.getInt(AccessibilitySettings.EXTRA_TITLE_RES);
+ if (titleRes > 0) {
+ getActivity().setTitle(titleRes);
+ }
+ }
}
private void updateConfigurationWarningIfNeeded() {
diff --git a/src/com/android/settings/applications/BackgroundCheckSummary.java b/src/com/android/settings/applications/BackgroundCheckSummary.java
index 1b8a787..4be3396 100644
--- a/src/com/android/settings/applications/BackgroundCheckSummary.java
+++ b/src/com/android/settings/applications/BackgroundCheckSummary.java
@@ -16,7 +16,7 @@
package com.android.settings.applications;
-import android.annotation.StringRes;
+import android.annotation.Nullable;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.preference.PreferenceFrameLayout;
@@ -38,6 +38,14 @@
}
@Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.background_check_pref);
+ }
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// initialize the inflater
mInflater = inflater;
@@ -59,10 +67,4 @@
return rootView;
}
- @Override
- @StringRes
- protected int getTitle() {
- return R.string.background_check_pref;
- }
-
}
diff --git a/src/com/android/settings/applications/RunningServices.java b/src/com/android/settings/applications/RunningServices.java
index c79b704..dd8f278 100644
--- a/src/com/android/settings/applications/RunningServices.java
+++ b/src/com/android/settings/applications/RunningServices.java
@@ -15,7 +15,6 @@
*/
package com.android.settings.applications;
-import android.annotation.StringRes;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -44,6 +43,10 @@
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
+
+ if (usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.runningservices_settings_title);
+ }
}
@Override
@@ -110,12 +113,6 @@
}
@Override
- @StringRes
- protected int getTitle() {
- return R.string.runningservices_settings_title;
- }
-
- @Override
public int getMetricsCategory() {
return MetricsEvent.RUNNING_SERVICES;
}
diff --git a/src/com/android/settings/core/InstrumentedPreferenceFragment.java b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
index 9ab1a01..8ef8c0e 100644
--- a/src/com/android/settings/core/InstrumentedPreferenceFragment.java
+++ b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
@@ -16,10 +16,9 @@
package com.android.settings.core;
-import android.annotation.Nullable;
-import android.annotation.StringRes;
import android.content.Context;
import android.os.Bundle;
+import android.support.annotation.VisibleForTesting;
import android.support.annotation.XmlRes;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
@@ -40,7 +39,8 @@
implements Instrumentable {
private static final String TAG = "InstrumentedPrefFrag";
- private static final String FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE =
+ @VisibleForTesting
+ static final String FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE =
"settings_use_preference_screen_title";
protected MetricsFeatureProvider mMetricsFeatureProvider;
@@ -57,17 +57,6 @@
}
@Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (usePreferenceScreenTitle()) {
- final int title = getTitle();
- if (title != -1) {
- getActivity().setTitle(title);
- }
- }
- }
-
- @Override
public void onAttach(Context context) {
super.onAttach(context);
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
@@ -81,6 +70,12 @@
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ if (usePreferenceScreenTitle()) {
+ final int resId = getPreferenceScreenResId();
+ if (resId > 0) {
+ addPreferencesFromResource(resId);
+ }
+ }
}
@Override
@@ -102,13 +97,9 @@
}
/**
- * Return the resource id of the title to be used for the fragment. This is for preference
- * fragments that do not have an explicit preference screen xml, and hence the title need to be
- * specified separately. Do not use this method if the title is already specified in the
- * preference screen.
+ * Get the res id for static preference xml for this fragment.
*/
- @StringRes
- protected int getTitle() {
+ protected int getPreferenceScreenResId() {
return -1;
}
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 53a51cd..84fc4ce 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -115,7 +115,6 @@
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- super.onCreatePreferences(savedInstanceState, rootKey);
refreshAllPreferences(getLogTag());
}
@@ -212,11 +211,6 @@
protected abstract String getLogTag();
/**
- * Get the res id for static preference xml for this fragment.
- */
- protected abstract int getPreferenceScreenResId();
-
- /**
* Get a list of {@link AbstractPreferenceController} for this fragment.
*/
protected abstract List<AbstractPreferenceController> getPreferenceControllers(Context context);
diff --git a/src/com/android/settings/display/ScreenZoomSettings.java b/src/com/android/settings/display/ScreenZoomSettings.java
index ab92155..f9a23c7 100644
--- a/src/com/android/settings/display/ScreenZoomSettings.java
+++ b/src/com/android/settings/display/ScreenZoomSettings.java
@@ -17,7 +17,6 @@
package com.android.settings.display;
import android.annotation.Nullable;
-import android.annotation.StringRes;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -71,6 +70,10 @@
mInitialIndex = initialIndex;
mDefaultDensity = density.getDefaultDensity();
}
+
+ if (usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.screen_zoom_title);
+ }
}
@Override
@@ -100,12 +103,6 @@
}
@Override
- @StringRes
- protected int getTitle() {
- return R.string.screen_zoom_title;
- }
-
- @Override
public int getMetricsCategory() {
return MetricsEvent.DISPLAY_SCREEN_ZOOM;
}
diff --git a/src/com/android/settings/language/PhoneLanguagePreferenceController.java b/src/com/android/settings/language/PhoneLanguagePreferenceController.java
index e7b0c72..e32adec 100644
--- a/src/com/android/settings/language/PhoneLanguagePreferenceController.java
+++ b/src/com/android/settings/language/PhoneLanguagePreferenceController.java
@@ -19,7 +19,12 @@
import android.content.Context;
import android.support.v7.preference.Preference;
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.localepicker.LocaleListEditor;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -60,4 +65,17 @@
public String getPreferenceKey() {
return KEY_PHONE_LANGUAGE;
}
+
+ @Override
+ public boolean handlePreferenceTreeClick(Preference preference) {
+ if (!InstrumentedPreferenceFragment.usePreferenceScreenTitle()
+ || !KEY_PHONE_LANGUAGE.equals(preference.getKey())) {
+ return false;
+ }
+ Utils.startWithFragment(mContext, LocaleListEditor.class.getName(), null, null, 0,
+ R.string.pref_title_lang_selection, null,
+ MetricsProto.MetricsEvent.SETTINGS_LANGUAGE_CATEGORY);
+ return true;
+ }
+
}
diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java
index 9590545..165be90 100644
--- a/src/com/android/settings/localepicker/LocaleListEditor.java
+++ b/src/com/android/settings/localepicker/LocaleListEditor.java
@@ -77,8 +77,6 @@
final View result = super.onCreateView(inflater, container, savedInstState);
final View myLayout = inflater.inflate(R.layout.locale_order_list, (ViewGroup) result);
- getActivity().setTitle(R.string.pref_title_lang_selection);
-
configureDragAndDrop(myLayout);
return result;
}
diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java
index e40fc21..fcdc630 100644
--- a/src/com/android/settings/nfc/AndroidBeam.java
+++ b/src/com/android/settings/nfc/AndroidBeam.java
@@ -16,7 +16,6 @@
package com.android.settings.nfc;
-import android.annotation.StringRes;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.UserHandle;
@@ -98,6 +97,10 @@
mSwitchBar.setEnabled(!mBeamDisallowedByBase);
mSwitchBar.show();
}
+
+ if (usePreferenceScreenTitle()) {
+ activity.setTitle(R.string.android_beam_settings_title);
+ }
}
@Override
@@ -131,10 +134,4 @@
public int getMetricsCategory() {
return MetricsEvent.NFC_BEAM;
}
-
- @Override
- @StringRes
- protected int getTitle() {
- return R.string.android_beam_settings_title;
- }
}
diff --git a/src/com/android/settings/notification/EmptyTextSettings.java b/src/com/android/settings/notification/EmptyTextSettings.java
index 2b5998e..3f8ccc6 100644
--- a/src/com/android/settings/notification/EmptyTextSettings.java
+++ b/src/com/android/settings/notification/EmptyTextSettings.java
@@ -32,17 +32,6 @@
private TextView mEmpty;
@Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- super.onCreatePreferences(savedInstanceState, rootKey);
- if (usePreferenceScreenTitle()) {
- final int resId = getPreferenceScreenResId();
- if (resId > 0) {
- addPreferencesFromResource(resId);
- }
- }
- }
-
- @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mEmpty = new TextView(getContext());
@@ -58,9 +47,4 @@
protected void setEmptyText(int text) {
mEmpty.setText(text);
}
-
- /**
- * Get the res id for static preference xml for this fragment.
- */
- protected abstract int getPreferenceScreenResId();
}
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
index 2cb337b..350fc76 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
@@ -50,15 +50,15 @@
import android.widget.TextView;
import com.android.internal.widget.LockPatternUtils;
-import com.android.settings.OptionsMenuFragment;
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.fingerprint.FingerprintUiHelper;
/**
* Base fragment to be shared for PIN/Pattern/Password confirmation fragments.
*/
-public abstract class ConfirmDeviceCredentialBaseFragment extends OptionsMenuFragment
+public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedPreferenceFragment
implements FingerprintUiHelper.Callback {
public static final String PACKAGE = "com.android.settings";
diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java
index f1df0a5..e446340 100644
--- a/src/com/android/settings/widget/RadioButtonPickerFragment.java
+++ b/src/com/android/settings/widget/RadioButtonPickerFragment.java
@@ -67,10 +67,7 @@
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
super.onCreatePreferences(savedInstanceState, rootKey);
- final int resId = getPreferenceScreenResId();
- if (usePreferenceScreenTitle() && resId > 0) {
- addPreferencesFromResource(resId);
- } else {
+ if (!usePreferenceScreenTitle()) {
addPreferencesFromResource(R.xml.placeholder_prefs);
}
updateCandidates();
@@ -116,13 +113,6 @@
}
/**
- * Get the res id for static preference xml for this fragment.
- */
- protected int getPreferenceScreenResId() {
- return -1;
- }
-
- /**
* A chance for subclasses to bind additional things to the preference.
*/
@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
diff --git a/tests/robotests/src/com/android/settings/core/InstrumentedPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/core/InstrumentedPreferenceFragmentTest.java
new file mode 100644
index 0000000..ab7228c
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/core/InstrumentedPreferenceFragmentTest.java
@@ -0,0 +1,150 @@
+/*
+ * 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.core;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v7.preference.PreferenceManager;
+import android.support.v7.preference.PreferenceScreen;
+import android.util.FeatureFlagUtils;
+
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.R;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
+import com.android.settings.TestConfig;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = {
+ SettingsShadowSystemProperties.class
+})
+public class InstrumentedPreferenceFragmentTest {
+
+ @Mock
+ private PreferenceScreen mScreen;
+ @Mock
+ private PreferenceManager mPreferenceManager;
+ @Mock
+ private Activity mActivity;
+
+ private InstrumentedPreferenceFragmentTestable mFragment;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ when(mPreferenceManager.getPreferenceScreen()).thenReturn(mScreen);
+
+ mFragment = spy(new InstrumentedPreferenceFragmentTestable());
+ ReflectionHelpers.setField(mFragment, "mPreferenceManager", mPreferenceManager);
+ }
+
+ @After
+ public void tearDown() {
+ SettingsShadowSystemProperties.clear();
+ }
+
+ @Test
+ public void onCreatePreferences_preferenceScreenTitleFeatureOff_shouldNotAddPreference() {
+ SettingsShadowSystemProperties.set(
+ FeatureFlagUtils.FFLAG_PREFIX + mFragment.FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE,
+ "false");
+
+ mFragment.onCreatePreferences(Bundle.EMPTY, null /* rootKey */);
+
+ verify(mFragment, never()).addPreferencesFromResource(anyInt());
+ }
+
+ @Test
+ public void onCreatePreferences_noPreferenceScreenResId_shouldNotAddPreference() {
+ SettingsShadowSystemProperties.set(
+ FeatureFlagUtils.FFLAG_PREFIX + mFragment.FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE,
+ "true");
+
+ mFragment.onCreatePreferences(Bundle.EMPTY, null /* rootKey */);
+
+ verify(mFragment, never()).addPreferencesFromResource(anyInt());
+ }
+
+ @Test
+ public void onCreatePreferences_gotPreferenceScreenResId_shouldAddPreferences() {
+ SettingsShadowSystemProperties.set(
+ FeatureFlagUtils.FFLAG_PREFIX + mFragment.FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE,
+ "true");
+ mFragment.setPreferenceScreenResId(R.xml.screen_pinning_settings);
+ when(mFragment.getActivity()).thenReturn(mActivity);
+
+ mFragment.onCreatePreferences(Bundle.EMPTY, null /* rootKey */);
+
+ verify(mFragment).addPreferencesFromResource(R.xml.screen_pinning_settings);
+ verify(mActivity, never()).setTitle(any());
+ }
+
+ @Test
+ public void onCreatePreferences_gotPrefScreenResIdAndTitle_shouldAddPreferencesAndSetTitle() {
+ SettingsShadowSystemProperties.set(
+ FeatureFlagUtils.FFLAG_PREFIX + mFragment.FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE,
+ "true");
+ mFragment.setPreferenceScreenResId(R.xml.screen_pinning_settings);
+ when(mFragment.getActivity()).thenReturn(mActivity);
+ final CharSequence title = "Test Title";
+ when(mScreen.getTitle()).thenReturn(title);
+
+ mFragment.onCreatePreferences(Bundle.EMPTY, null /* rootKey */);
+
+ verify(mFragment).addPreferencesFromResource(R.xml.screen_pinning_settings);
+ verify(mActivity).setTitle(title);
+ }
+
+ private static class InstrumentedPreferenceFragmentTestable
+ extends InstrumentedPreferenceFragment {
+
+ private int mScreenId = -1;
+
+ public InstrumentedPreferenceFragmentTestable() {
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsEvent.VIEW_UNKNOWN;
+ }
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return mScreenId;
+ }
+
+ public void setPreferenceScreenResId(int id) {
+ mScreenId = id;
+ }
+ }
+}