Merge "Disables the Gesture nav option if 3P launcher is default" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cad67cdc0a
@@ -24,10 +24,14 @@ import static com.android.settings.gestures.SystemNavigationPreferenceController
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.text.TextUtils;
|
||||
@@ -39,6 +43,7 @@ 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.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
@@ -53,9 +58,15 @@ public class SystemNavigationPreferenceControllerTest {
|
||||
private Context mContext;
|
||||
private ShadowPackageManager mPackageManager;
|
||||
|
||||
@Mock
|
||||
private Context mMockContext;
|
||||
@Mock
|
||||
private PackageManager mMockPackageManager;
|
||||
|
||||
private SystemNavigationPreferenceController mController;
|
||||
|
||||
private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
|
||||
private static final String TEST_RECENTS_COMPONENT_NAME = "test.component.name/.testActivity";
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -69,6 +80,10 @@ public class SystemNavigationPreferenceControllerTest {
|
||||
|
||||
mController = new SystemNavigationPreferenceController(mContext,
|
||||
PREF_KEY_SYSTEM_NAVIGATION);
|
||||
|
||||
when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
|
||||
when(mMockContext.getString(com.android.internal.R.string.config_recentsComponentName))
|
||||
.thenReturn(TEST_RECENTS_COMPONENT_NAME);
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -166,4 +181,46 @@ public class SystemNavigationPreferenceControllerTest {
|
||||
assertThat(TextUtils.equals(mController.getSummary(), mContext.getText(
|
||||
com.android.settings.R.string.swipe_up_to_switch_apps_title))).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsGestureNavSupportedByDefaultLauncher_noDefaultLauncher() {
|
||||
when(mMockPackageManager.getHomeActivities(any())).thenReturn(null);
|
||||
assertThat(SystemNavigationPreferenceController
|
||||
.isGestureNavSupportedByDefaultLauncher(mMockContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsGestureNavSupportedByDefaultLauncher_supported() {
|
||||
when(mMockPackageManager.getHomeActivities(any())).thenReturn(
|
||||
ComponentName.unflattenFromString(TEST_RECENTS_COMPONENT_NAME));
|
||||
assertThat(SystemNavigationPreferenceController
|
||||
.isGestureNavSupportedByDefaultLauncher(mMockContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsGestureNavSupportedByDefaultLauncher_notSupported() {
|
||||
when(mMockPackageManager.getHomeActivities(any())).thenReturn(
|
||||
new ComponentName("unsupported", "launcher"));
|
||||
assertThat(SystemNavigationPreferenceController
|
||||
.isGestureNavSupportedByDefaultLauncher(mMockContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDefaultHomeAppName_noDefaultLauncher() {
|
||||
when(mMockPackageManager.getHomeActivities(any())).thenReturn(null);
|
||||
assertThat(SystemNavigationPreferenceController
|
||||
.getDefaultHomeAppName(mMockContext)).isEqualTo("");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDefaultHomeAppName_defaultLauncherExists() throws Exception {
|
||||
when(mMockPackageManager.getHomeActivities(any())).thenReturn(
|
||||
new ComponentName("supported", "launcher"));
|
||||
ApplicationInfo info = new ApplicationInfo();
|
||||
when(mMockPackageManager.getApplicationInfo("supported", 0)).thenReturn(info);
|
||||
when(mMockPackageManager.getApplicationLabel(info)).thenReturn("Test Home App");
|
||||
|
||||
assertThat(SystemNavigationPreferenceController
|
||||
.getDefaultHomeAppName(mMockContext)).isEqualTo("Test Home App");
|
||||
}
|
||||
}
|
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Copyright (C) 2019 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.widget;
|
||||
|
||||
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
|
||||
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_INFO;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import android.app.Application;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class RadioButtonPreferenceWithExtraWidgetTest {
|
||||
|
||||
private Application mContext;
|
||||
private RadioButtonPreferenceWithExtraWidget mPreference;
|
||||
|
||||
private TextView mSummary;
|
||||
private ImageView mExtraWidget;
|
||||
private View mExtraWidgetDivider;
|
||||
|
||||
private boolean mIsClickListenerCalled = false;
|
||||
private View.OnClickListener mClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mIsClickListenerCalled = true;
|
||||
}
|
||||
};
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mPreference = new RadioButtonPreferenceWithExtraWidget(mContext);
|
||||
mPreference.setSummary("test summary");
|
||||
|
||||
View view = LayoutInflater.from(mContext)
|
||||
.inflate(R.layout.preference_radio_with_extra_widget, null);
|
||||
PreferenceViewHolder preferenceViewHolder =
|
||||
PreferenceViewHolder.createInstanceForTests(view);
|
||||
mPreference.onBindViewHolder(preferenceViewHolder);
|
||||
|
||||
mSummary = view.findViewById(android.R.id.summary);
|
||||
mExtraWidget = view.findViewById(R.id.radio_extra_widget);
|
||||
mExtraWidgetDivider = view.findViewById(R.id.radio_extra_widget_divider);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHaveRadioPreferenceWithExtraWidgetLayout() {
|
||||
assertThat(mPreference.getLayoutResource())
|
||||
.isEqualTo(R.layout.preference_radio_with_extra_widget);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void iconSpaceReservedShouldBeFalse() {
|
||||
assertThat(mPreference.isIconSpaceReserved()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void summaryShouldBeVisible() {
|
||||
assertEquals(View.VISIBLE, mSummary.getVisibility());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetExtraWidgetVisibility_gone() {
|
||||
mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_GONE);
|
||||
assertEquals(View.GONE, mExtraWidget.getVisibility());
|
||||
assertEquals(View.GONE, mExtraWidgetDivider.getVisibility());
|
||||
assertThat(mExtraWidget.isClickable()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetExtraWidgetVisibility_info() {
|
||||
mPreference.setExtraWidgetVisibility(EXTRA_WIDGET_VISIBILITY_INFO);
|
||||
assertEquals(View.VISIBLE, mExtraWidget.getVisibility());
|
||||
assertEquals(View.VISIBLE, mExtraWidgetDivider.getVisibility());
|
||||
assertThat(mExtraWidget.isClickable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetExtraWidgetOnClickListener() {
|
||||
mPreference.setExtraWidgetOnClickListener(mClickListener);
|
||||
|
||||
assertThat(mIsClickListenerCalled).isFalse();
|
||||
mExtraWidget.callOnClick();
|
||||
assertThat(mIsClickListenerCalled).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void extraWidgetStaysEnabledWhenPreferenceIsDisabled() {
|
||||
mPreference.setEnabled(false);
|
||||
mExtraWidget.setEnabled(false);
|
||||
|
||||
assertThat(mExtraWidget.isEnabled()).isFalse();
|
||||
mPreference.setExtraWidgetOnClickListener(mClickListener);
|
||||
assertThat(mExtraWidget.isEnabled()).isTrue();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user