diff options
| author | 2018-03-01 02:38:47 +0000 | |
|---|---|---|
| committer | 2018-03-01 02:38:47 +0000 | |
| commit | 3ae0efcc095255bcd13635decfbca614d60a11cd (patch) | |
| tree | 4527a7791189ff7fa67067da2abd0405f9528c42 | |
| parent | a56e8da747b2bc0536162c079c75b9eebd6886a3 (diff) | |
| parent | 7e91932382a2b94a144cbe2ae5778b346f19d725 (diff) | |
Merge "Add default implementation to handle master dev option switch."
2 files changed, 93 insertions, 2 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java index f68c04f91dbf..d3dc8aa13482 100644 --- a/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java @@ -17,6 +17,8 @@ package com.android.settingslib.development; import android.content.Context; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceScreen; import com.android.settingslib.core.AbstractPreferenceController; @@ -26,8 +28,9 @@ import com.android.settingslib.core.AbstractPreferenceController; * All Preference Controllers that are a part of the developer options page should inherit this * class. */ -public abstract class DeveloperOptionsPreferenceController extends - AbstractPreferenceController { +public abstract class DeveloperOptionsPreferenceController extends AbstractPreferenceController { + + protected Preference mPreference; public DeveloperOptionsPreferenceController(Context context) { super(context); @@ -43,6 +46,12 @@ public abstract class DeveloperOptionsPreferenceController extends return true; } + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mPreference = screen.findPreference(getPreferenceKey()); + } + /** * Called when developer options is enabled */ @@ -65,12 +74,14 @@ public abstract class DeveloperOptionsPreferenceController extends * Called when developer options is enabled and the preference is available */ protected void onDeveloperOptionsSwitchEnabled() { + mPreference.setEnabled(true); } /** * Called when developer options is disabled and the preference is available */ protected void onDeveloperOptionsSwitchDisabled() { + mPreference.setEnabled(false); } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/DeveloperOptionsPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/DeveloperOptionsPreferenceControllerTest.java new file mode 100644 index 000000000000..7820fd2fe340 --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/DeveloperOptionsPreferenceControllerTest.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2018 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.settingslib.development; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; + +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceScreen; + +import com.android.settingslib.SettingsLibRobolectricTestRunner; + +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; + +@RunWith(SettingsLibRobolectricTestRunner.class) +public class DeveloperOptionsPreferenceControllerTest { + + private static final String TEST_KEY = "Test_pref_key"; + + @Mock + private Preference mPreference; + @Mock + private PreferenceScreen mPreferenceScreen; + + private DeveloperOptionsPreferenceController mController; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mController = new DeveloperOptionsPreferenceControllerTestable(); + doReturn(mPreference).when(mPreferenceScreen).findPreference(TEST_KEY); + mController.displayPreference(mPreferenceScreen); + } + + @Test + public void onDeveloperOptionsEnabled_shouldEnablePreference() { + mController.onDeveloperOptionsEnabled(); + + verify(mPreference).setEnabled(true); + } + + @Test + public void onDeveloperOptionsDisabled_shouldDisablePreference() { + mController.onDeveloperOptionsDisabled(); + + verify(mPreference).setEnabled(false); + } + + private class DeveloperOptionsPreferenceControllerTestable extends + DeveloperOptionsPreferenceController { + DeveloperOptionsPreferenceControllerTestable() { + super(RuntimeEnvironment.application); + } + + @Override + public String getPreferenceKey() { + return TEST_KEY; + } + } +} + |