Refactor help menu stuff into a controller

This is a clean up to action bar menu item pattern, we will use the same
pattern to build search icon on all pages in a later change.

Bug: 68814716
Test: robotests
Change-Id: Iedd3ec263e8ccb63ed75ec7a95b28c00878b1de4
This commit is contained in:
Fan Zhang
2017-11-29 14:55:59 -08:00
parent 4811c82638
commit e0b0e9f902
55 changed files with 247 additions and 104 deletions

View File

@@ -76,7 +76,7 @@ public class DeviceInfoSettings extends DashboardFragment implements Indexable {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_about; return R.string.help_uri_about;
} }

View File

@@ -77,7 +77,7 @@ public class DisplaySettings extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_display; return R.string.help_uri_display;
} }

View File

@@ -295,7 +295,7 @@ public class IccLockSettings extends SettingsPreferenceFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_icc_lock; return R.string.help_url_icc_lock;
} }

View File

@@ -220,7 +220,7 @@ public class PrivacySettings extends SettingsPreferenceFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_backup_reset; return R.string.help_url_backup_reset;
} }

View File

@@ -39,8 +39,6 @@ import android.text.TextUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
@@ -49,10 +47,11 @@ import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.instrumentation.Instrumentable; import com.android.settings.core.instrumentation.Instrumentable;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.support.actionbar.HelpMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settings.widget.LoadingViewController; import com.android.settings.widget.LoadingViewController;
import com.android.settingslib.CustomDialogPreference; import com.android.settingslib.CustomDialogPreference;
import com.android.settingslib.CustomEditTextPreference; import com.android.settingslib.CustomEditTextPreference;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.widget.FooterPreferenceMixin; import com.android.settingslib.widget.FooterPreferenceMixin;
import java.util.UUID; import java.util.UUID;
@@ -61,13 +60,7 @@ import java.util.UUID;
* Base class for Settings fragments, with some helper functions and dialog management. * Base class for Settings fragments, with some helper functions and dialog management.
*/ */
public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceFragment public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceFragment
implements DialogCreatable { implements DialogCreatable, HelpResourceProvider {
/**
* The Help Uri Resource key. This can be passed as an extra argument when creating the
* Fragment.
**/
public static final String HELP_URI_RESOURCE_KEY = "help_uri_resource";
private static final String TAG = "SettingsPreference"; private static final String TAG = "SettingsPreference";
@@ -79,13 +72,11 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
protected final FooterPreferenceMixin mFooterPreferenceMixin = protected final FooterPreferenceMixin mFooterPreferenceMixin =
new FooterPreferenceMixin(this, getLifecycle()); new FooterPreferenceMixin(this, getLifecycle());
private SettingsDialogFragment mDialogFragment;
private String mHelpUri;
private static final int ORDER_FIRST = -1; private static final int ORDER_FIRST = -1;
private static final int ORDER_LAST = Integer.MAX_VALUE -1; private static final int ORDER_LAST = Integer.MAX_VALUE -1;
private SettingsDialogFragment mDialogFragment;
// Cache the content resolver for async callbacks // Cache the content resolver for async callbacks
private ContentResolver mContentResolver; private ContentResolver mContentResolver;
@@ -144,22 +135,12 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
HelpMenuController.init(this /* host */);
if (icicle != null) { if (icicle != null) {
mPreferenceHighlighted = icicle.getBoolean(SAVE_HIGHLIGHTED_KEY); mPreferenceHighlighted = icicle.getBoolean(SAVE_HIGHLIGHTED_KEY);
} }
// Prepare help url and enable menu if necessary
final Bundle arguments = getArguments(); final Bundle arguments = getArguments();
final int helpResource;
if (arguments != null && arguments.containsKey(HELP_URI_RESOURCE_KEY)) {
helpResource = arguments.getInt(HELP_URI_RESOURCE_KEY);
} else {
helpResource = getHelpResource();
}
if (helpResource != 0) {
mHelpUri = getResources().getString(helpResource);
}
// Check if we should keep the preferences expanded. // Check if we should keep the preferences expanded.
if (arguments != null) { if (arguments != null) {
@@ -177,8 +158,8 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
final View root = super.onCreateView(inflater, container, savedInstanceState); final View root = super.onCreateView(inflater, container, savedInstanceState);
mPinnedHeaderFrameLayout = (ViewGroup) root.findViewById(R.id.pinned_header); mPinnedHeaderFrameLayout = root.findViewById(R.id.pinned_header);
mButtonBar = (ViewGroup) root.findViewById(R.id.button_bar); mButtonBar = root.findViewById(R.id.button_bar);
return root; return root;
} }
@@ -465,22 +446,6 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
return false; return false;
} }
/**
* Override this if you want to show a help item in the menu, by returning the resource id.
* @return the resource id for the help url
*/
protected int getHelpResource() {
return R.string.help_uri_default;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
if (mHelpUri != null && getActivity() != null) {
HelpUtils.prepareHelpMenuItem(getActivity(), menu, mHelpUri, getClass().getName());
}
}
/* /*
* The name is intentionally made different from Activity#finish(), so that * The name is intentionally made different from Activity#finish(), so that
* users won't misunderstand its meaning. * users won't misunderstand its meaning.

View File

@@ -131,7 +131,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
}; };
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
// Helper resource is already defined in the container fragment. // Helper resource is already defined in the container fragment.
return 0; return 0;
} }

View File

@@ -230,7 +230,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_accessibility; return R.string.help_uri_accessibility;
} }

View File

@@ -17,22 +17,13 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import android.app.Fragment; import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.accessibility.AccessibilityEvent;
import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.View; import android.view.accessibility.AccessibilityEvent;
import android.view.WindowInsets;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.setupwizardlib.util.SystemBarHelper;
import com.android.setupwizardlib.view.NavigationBar;
public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity { public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity {
@@ -94,7 +85,7 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit
} }
// Start the new Fragment. // Start the new Fragment.
args.putInt(SettingsPreferenceFragment.HELP_URI_RESOURCE_KEY, 0); args.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 0);
startPreferenceFragment(Fragment.instantiate(this, fragmentClass, args), true); startPreferenceFragment(Fragment.instantiate(this, fragmentClass, args), true);
mSendExtraWindowStateChanged = true; mSendExtraWindowStateChanged = true;
} }

View File

@@ -51,7 +51,7 @@ public class AccessibilityShortcutPreferenceFragment extends ToggleFeaturePrefer
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_accessibility_shortcut; return R.string.help_url_accessibility_shortcut;
} }

View File

@@ -66,7 +66,7 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_magnification; return R.string.help_url_magnification;
} }

View File

@@ -103,7 +103,7 @@ public class ToggleAutoclickPreferenceFragment extends ToggleFeaturePreferenceFr
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_autoclick; return R.string.help_url_autoclick;
} }

View File

@@ -41,7 +41,7 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_color_correction; return R.string.help_url_color_correction;
} }

View File

@@ -99,7 +99,7 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_account_detail; return R.string.help_url_account_detail;
} }

View File

@@ -573,7 +573,7 @@ public class AccountSyncSettings extends AccountPreferenceBase {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_accounts; return R.string.help_url_accounts;
} }
} }

View File

@@ -56,7 +56,7 @@ public class UserAndAccountDashboardFragment extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_user_and_account_dashboard; return R.string.help_url_user_and_account_dashboard;
} }

View File

@@ -48,7 +48,7 @@ public class AppAndNotificationDashboardFragment extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_apps_and_notifications; return R.string.help_url_apps_and_notifications;
} }

View File

@@ -103,7 +103,7 @@ public class ProcessStatsSummary extends ProcessStatsBase implements OnPreferenc
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_process_stats_summary; return R.string.help_uri_process_stats_summary;
} }

View File

@@ -96,7 +96,7 @@ public class ProcessStatsUi extends ProcessStatsBase {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_process_stats_apps; return R.string.help_uri_process_stats_apps;
} }

View File

@@ -169,7 +169,7 @@ public class BluetoothPairingDetail extends DeviceListPreferenceFragment impleme
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_bluetooth; return R.string.help_url_bluetooth;
} }

View File

@@ -345,7 +345,7 @@ public class BluetoothSettings extends DeviceListPreferenceFragment implements I
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_bluetooth; return R.string.help_url_bluetooth;
} }

View File

@@ -48,7 +48,7 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_connected_devices; return R.string.help_url_connected_devices;
} }

View File

@@ -62,7 +62,7 @@ public class ConnectedDeviceDashboardFragmentOld extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_connected_devices; return R.string.help_url_connected_devices;
} }

View File

@@ -74,7 +74,7 @@ public class DataPlanUsageSummary extends DataUsageBase {
private NetworkPolicyEditor mPolicyEditor; private NetworkPolicyEditor mPolicyEditor;
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_data_usage; return R.string.help_url_data_usage;
} }

View File

@@ -105,7 +105,7 @@ public class DataSaverSummary extends SettingsPreferenceFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_data_saver; return R.string.help_url_data_saver;
} }

View File

@@ -91,7 +91,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
private NetworkPolicyEditor mPolicyEditor; private NetworkPolicyEditor mPolicyEditor;
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_data_usage; return R.string.help_url_data_usage;
} }

View File

@@ -133,7 +133,7 @@ public class UnrestrictedDataAccess extends SettingsPreferenceFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_unrestricted_data_access; return R.string.help_url_unrestricted_data_access;
} }

View File

@@ -137,7 +137,7 @@ public class AutomaticStorageManagerSettings extends DashboardFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_storage; return R.string.help_uri_storage;
} }

View File

@@ -292,7 +292,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return 0; return 0;
} }

View File

@@ -46,7 +46,7 @@ public class FeatureFlagsDashboard extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return 0; return 0;
} }

View File

@@ -117,7 +117,7 @@ public class StorageDashboardFragment extends DashboardFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_storage_dashboard; return R.string.help_url_storage_dashboard;
} }

View File

@@ -100,7 +100,7 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_storage; return R.string.help_uri_storage;
} }

View File

@@ -75,7 +75,7 @@ public class NightDisplaySettings extends SettingsPreferenceFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_night_display; return R.string.help_url_night_display;
} }

View File

@@ -99,7 +99,7 @@ public class DreamSettings extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_screen_saver; return R.string.help_url_screen_saver;
} }

View File

@@ -545,7 +545,7 @@ public class FingerprintSettings extends SubSettings {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_fingerprint; return R.string.help_url_fingerprint;
} }

View File

@@ -340,7 +340,7 @@ public class PowerUsageSummary extends PowerUsageBase implements
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_battery; return R.string.help_url_battery;
} }

View File

@@ -68,7 +68,7 @@ public class DoubleTapScreenSettings extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_double_tap_screen; return R.string.help_url_double_tap_screen;
} }

View File

@@ -68,7 +68,7 @@ public class PickupGestureSettings extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_pickup_gesture; return R.string.help_url_pickup_gesture;
} }

View File

@@ -78,7 +78,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_network_dashboard; return R.string.help_url_network_dashboard;
} }

View File

@@ -71,7 +71,7 @@ public class SoundSettings extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_sound; return R.string.help_url_sound;
} }

View File

@@ -54,7 +54,7 @@ public class ZenModeSettings extends ZenModeSettingsBase {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_interruptions; return R.string.help_uri_interruptions;
} }

View File

@@ -753,7 +753,7 @@ public class ChooseLockGeneric extends SettingsActivity {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_choose_lockscreen; return R.string.help_url_choose_lockscreen;
} }

View File

@@ -98,7 +98,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_printing; return R.string.help_uri_printing;
} }

View File

@@ -76,7 +76,7 @@ public class EncryptionAndCredential extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_encryption; return R.string.help_url_encryption;
} }

View File

@@ -71,7 +71,7 @@ public class LockscreenDashboardFragment extends DashboardFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_lockscreen; return R.string.help_url_lockscreen;
} }

View File

@@ -78,7 +78,7 @@ public class ScreenPinningSettings extends SettingsPreferenceFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_screen_pinning; return R.string.help_url_screen_pinning;
} }

View File

@@ -749,7 +749,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_security; return R.string.help_url_security;
} }

View File

@@ -79,7 +79,7 @@ public class TrustAgentSettings extends SettingsPreferenceFragment implements
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_trust_agent; return R.string.help_url_trust_agent;
} }

View File

@@ -0,0 +1,67 @@
/*
* 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.support.actionbar;
import static com.android.settings.support.actionbar.HelpResourceProvider.HELP_URI_RESOURCE_KEY;
import android.annotation.NonNull;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment;
import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu;
/**
* A controller that adds help menu to any Settings page.
*/
public class HelpMenuController implements LifecycleObserver, OnCreateOptionsMenu {
private final Fragment mHost;
public static void init(@NonNull ObservablePreferenceFragment host) {
host.getLifecycle().addObserver(new HelpMenuController(host));
}
private HelpMenuController(@NonNull Fragment host) {
mHost = host;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
final Bundle arguments = mHost.getArguments();
int helpResourceId = 0;
if (arguments != null && arguments.containsKey(HELP_URI_RESOURCE_KEY)) {
helpResourceId = arguments.getInt(HELP_URI_RESOURCE_KEY);
} else if (mHost instanceof HelpResourceProvider) {
helpResourceId = ((HelpResourceProvider) mHost).getHelpResource();
}
String helpUri = null;
if (helpResourceId != 0) {
helpUri = mHost.getContext().getString(helpResourceId);
}
final Activity activity = mHost.getActivity();
if (helpUri != null && activity != null) {
HelpUtils.prepareHelpMenuItem(activity, menu, helpUri, mHost.getClass().getName());
}
}
}

View File

@@ -0,0 +1,36 @@
/*
* 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.support.actionbar;
import com.android.settings.R;
public interface HelpResourceProvider {
/**
* The Help Uri Resource key. This can be passed as an extra argument when creating the
* Fragment.
**/
String HELP_URI_RESOURCE_KEY = "help_uri_resource";
/**
* Override this if you want to show a help item in the menu, by returning the resource id.
*
* @return the resource id for the help url
*/
default int getHelpResource() {
return R.string.help_uri_default;
}
}

View File

@@ -56,7 +56,7 @@ public class SystemDashboardFragment extends DashboardFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_system_dashboard; return R.string.help_url_system_dashboard;
} }

View File

@@ -401,7 +401,7 @@ public class VpnSettings extends RestrictedSettingsFragment implements
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_vpn; return R.string.help_url_vpn;
} }

View File

@@ -43,7 +43,7 @@ public class WallpaperTypeSettings extends SettingsPreferenceFragment implements
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_uri_wallpaper; return R.string.help_uri_wallpaper;
} }

View File

@@ -136,7 +136,7 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_remote_display; return R.string.help_url_remote_display;
} }

View File

@@ -1071,7 +1071,7 @@ public class WifiSettings extends RestrictedSettingsFragment
} }
@Override @Override
protected int getHelpResource() { public int getHelpResource() {
return R.string.help_url_wifi; return R.string.help_url_wifi;
} }

View File

@@ -0,0 +1,84 @@
/*
* 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.support.actionbar;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.content.Context;
import android.os.Bundle;
import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment;
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;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION_O)
public class HelpMenuControllerTest {
@Mock
private Context mContext;
private TestFragment mHost;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mHost = spy(new TestFragment());
doReturn(mContext).when(mHost).getContext();
}
@Test
public void onCreateOptionsMenu_withArgumentOverride_shouldPrepareHelpUsingOverride() {
final Bundle bundle = new Bundle();
bundle.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 123);
mHost.setArguments(bundle);
HelpMenuController.init(mHost);
mHost.getLifecycle().onCreateOptionsMenu(null /* menu */, null /* inflater */);
verify(mContext).getString(123);
}
@Test
public void onCreateOptionsMenu_noArgumentOverride_shouldPrepareHelpUsingProvider() {
HelpMenuController.init(mHost);
mHost.getLifecycle().onCreateOptionsMenu(null /* menu */, null /* inflater */);
verify(mContext).getString(mHost.getHelpResource());
}
public static class TestFragment extends ObservablePreferenceFragment
implements HelpResourceProvider {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
}
}
}