Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bec14406 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [4787603, 4787134, 4787604, 4786834, 4787135, 4787488,...

Merge cherrypicks of [4787603, 4787134, 4787604, 4786834, 4787135, 4787488, 4786835, 4787489, 4787490, 4787548, 4787549, 4787550, 4787551, 4787552, 4787553, 4787502, 4786836, 4785839, 4787620, 4787621, 4787622, 4787623, 4787624, 4787625, 4787626, 4787627, 4787628] into oc-m7-release

Change-Id: I858bc7c995e2d42cf5d449d9eedb832d47373934
parents 0873eb7b 0e3fd18e
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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) {
+9 −0
Original line number Diff line number Diff line
@@ -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());
@@ -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);
+5 −0
Original line number Diff line number Diff line
@@ -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.
+26 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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
+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;
        }
    }

}