Loading src/com/android/settings/SettingsActivity.java +7 −1 Original line number Diff line number Diff line Loading @@ -322,7 +322,7 @@ public class SettingsActivity extends SettingsDrawerActivity } if (mIsShowingDashboard) { findViewById(R.id.search_bar).setVisibility(View.VISIBLE); setSearchBarVisibility(); findViewById(R.id.action_bar).setVisibility(View.GONE); Toolbar toolbar = findViewById(R.id.search_action_bar); toolbar.setOnClickListener(this); Loading Loading @@ -406,6 +406,12 @@ public class SettingsActivity extends SettingsDrawerActivity } } @VisibleForTesting void setSearchBarVisibility() { findViewById(R.id.search_bar).setVisibility( Utils.isDeviceProvisioned(this) ? View.VISIBLE : View.INVISIBLE); } @VisibleForTesting void launchSettingFragment(String initialFragmentName, boolean isSubSettings, Intent intent) { if (!mIsShowingDashboard && initialFragmentName != null) { Loading src/com/android/settings/password/ChooseLockGeneric.java +9 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,11 @@ public class ChooseLockGeneric extends SettingsActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Activity activity = getActivity(); if (!Utils.isDeviceProvisioned(activity) && !canRunBeforeDeviceProvisioned()) { activity.finish(); return; } String chooseLockAction = getActivity().getIntent().getAction(); mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity()); Loading Loading @@ -248,6 +253,10 @@ public class ChooseLockGeneric extends SettingsActivity { addHeaderView(); } protected boolean canRunBeforeDeviceProvisioned() { return false; } protected void addHeaderView() { if (mForFingerprint) { setHeaderView(R.layout.choose_lock_generic_fingerprint_header); Loading src/com/android/settings/password/SetupChooseLockGeneric.java +5 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,11 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { return layout.onCreateRecyclerView(inflater, parent, savedInstanceState); } @Override protected boolean canRunBeforeDeviceProvisioned() { return true; } /*** * Disables preferences that are less secure than required quality and shows only secure * screen lock options here. Loading tests/robotests/src/com/android/settings/SettingsActivityTest.java +26 −6 Original line number Diff line number Diff line Loading @@ -35,12 +35,11 @@ import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.Menu; import android.provider.Settings.Global; import android.view.View; import com.android.settings.search.SearchActivity; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -56,23 +55,44 @@ import org.robolectric.util.ReflectionHelpers; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class SettingsActivityTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock private FragmentManager mFragmentManager; @Mock private ActivityManager.TaskDescription mTaskDescription; @Mock private Bitmap mBitmap; @Mock private View mSearchBar; private SettingsActivity mActivity; private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mActivity = spy(new SettingsActivity()); doReturn(mBitmap).when(mActivity).getBitmapFromXmlResource(anyInt()); doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver(); doReturn(mSearchBar).when(mActivity).findViewById(R.id.search_bar); } @Test public void setSearchBarVisibility_deviceNotProvisioned_shouldDisableSearch() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0); mActivity.setSearchBarVisibility(); verify(mSearchBar).setVisibility(View.INVISIBLE); } @Test public void setSearchBarVisibility_deviceProvisioned_shouldEnableSearch() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 1); mActivity.setSearchBarVisibility(); verify(mSearchBar).setVisibility(View.VISIBLE); } @Test Loading tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java 0 → 100644 +97 −0 Original line number Diff line number Diff line /* * 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.settings.password; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.FragmentHostCallback; import android.content.Context; import android.os.Bundle; import android.provider.Settings.Global; import com.android.settings.TestConfig; import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; 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.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @Config( manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { SettingsShadowResources.class, SettingsShadowResources.SettingsShadowTheme.class }) public class ChooseLockGenericTest { @Mock private ChooseLockGeneric mActivity; private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; when(mActivity.getContentResolver()).thenReturn(mContext.getContentResolver()); when(mActivity.getTheme()).thenReturn(mContext.getTheme()); when(mActivity.getResources()).thenReturn(mContext.getResources()); } @After public void tearDown() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 1); } @Test public void onCreate_deviceNotProvisioned_shouldFinishActivity() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0); final ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment()); when(fragment.getActivity()).thenReturn(mActivity); ReflectionHelpers.setField(fragment, "mHost", new TestHostCallbacks()); fragment.onCreate(Bundle.EMPTY); verify(mActivity).finish(); } public class TestHostCallbacks extends FragmentHostCallback<Activity> { public TestHostCallbacks() { super(mActivity, null /* handler */, 0 /* windowAnimations */); } @Override public Activity onGetHost() { return mActivity; } } } Loading
src/com/android/settings/SettingsActivity.java +7 −1 Original line number Diff line number Diff line Loading @@ -322,7 +322,7 @@ public class SettingsActivity extends SettingsDrawerActivity } if (mIsShowingDashboard) { findViewById(R.id.search_bar).setVisibility(View.VISIBLE); setSearchBarVisibility(); findViewById(R.id.action_bar).setVisibility(View.GONE); Toolbar toolbar = findViewById(R.id.search_action_bar); toolbar.setOnClickListener(this); Loading Loading @@ -406,6 +406,12 @@ public class SettingsActivity extends SettingsDrawerActivity } } @VisibleForTesting void setSearchBarVisibility() { findViewById(R.id.search_bar).setVisibility( Utils.isDeviceProvisioned(this) ? View.VISIBLE : View.INVISIBLE); } @VisibleForTesting void launchSettingFragment(String initialFragmentName, boolean isSubSettings, Intent intent) { if (!mIsShowingDashboard && initialFragmentName != null) { Loading
src/com/android/settings/password/ChooseLockGeneric.java +9 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,11 @@ public class ChooseLockGeneric extends SettingsActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Activity activity = getActivity(); if (!Utils.isDeviceProvisioned(activity) && !canRunBeforeDeviceProvisioned()) { activity.finish(); return; } String chooseLockAction = getActivity().getIntent().getAction(); mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity()); Loading Loading @@ -248,6 +253,10 @@ public class ChooseLockGeneric extends SettingsActivity { addHeaderView(); } protected boolean canRunBeforeDeviceProvisioned() { return false; } protected void addHeaderView() { if (mForFingerprint) { setHeaderView(R.layout.choose_lock_generic_fingerprint_header); Loading
src/com/android/settings/password/SetupChooseLockGeneric.java +5 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,11 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { return layout.onCreateRecyclerView(inflater, parent, savedInstanceState); } @Override protected boolean canRunBeforeDeviceProvisioned() { return true; } /*** * Disables preferences that are less secure than required quality and shows only secure * screen lock options here. Loading
tests/robotests/src/com/android/settings/SettingsActivityTest.java +26 −6 Original line number Diff line number Diff line Loading @@ -35,12 +35,11 @@ import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.Menu; import android.provider.Settings.Global; import android.view.View; import com.android.settings.search.SearchActivity; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -56,23 +55,44 @@ import org.robolectric.util.ReflectionHelpers; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class SettingsActivityTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock private FragmentManager mFragmentManager; @Mock private ActivityManager.TaskDescription mTaskDescription; @Mock private Bitmap mBitmap; @Mock private View mSearchBar; private SettingsActivity mActivity; private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mActivity = spy(new SettingsActivity()); doReturn(mBitmap).when(mActivity).getBitmapFromXmlResource(anyInt()); doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver(); doReturn(mSearchBar).when(mActivity).findViewById(R.id.search_bar); } @Test public void setSearchBarVisibility_deviceNotProvisioned_shouldDisableSearch() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0); mActivity.setSearchBarVisibility(); verify(mSearchBar).setVisibility(View.INVISIBLE); } @Test public void setSearchBarVisibility_deviceProvisioned_shouldEnableSearch() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 1); mActivity.setSearchBarVisibility(); verify(mSearchBar).setVisibility(View.VISIBLE); } @Test Loading
tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java 0 → 100644 +97 −0 Original line number Diff line number Diff line /* * 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.settings.password; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.FragmentHostCallback; import android.content.Context; import android.os.Bundle; import android.provider.Settings.Global; import com.android.settings.TestConfig; import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; 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.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @Config( manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { SettingsShadowResources.class, SettingsShadowResources.SettingsShadowTheme.class }) public class ChooseLockGenericTest { @Mock private ChooseLockGeneric mActivity; private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; when(mActivity.getContentResolver()).thenReturn(mContext.getContentResolver()); when(mActivity.getTheme()).thenReturn(mContext.getTheme()); when(mActivity.getResources()).thenReturn(mContext.getResources()); } @After public void tearDown() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 1); } @Test public void onCreate_deviceNotProvisioned_shouldFinishActivity() { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0); final ChooseLockGenericFragment fragment = spy(new ChooseLockGenericFragment()); when(fragment.getActivity()).thenReturn(mActivity); ReflectionHelpers.setField(fragment, "mHost", new TestHostCallbacks()); fragment.onCreate(Bundle.EMPTY); verify(mActivity).finish(); } public class TestHostCallbacks extends FragmentHostCallback<Activity> { public TestHostCallbacks() { super(mActivity, null /* handler */, 0 /* windowAnimations */); } @Override public Activity onGetHost() { return mActivity; } } }