Snap for 8107456 from 7dd97c7091 to tm-release

Change-Id: I2dbf9382e47e7fc6ed64a05de8c0ed0309af3360
This commit is contained in:
Android Build Coastguard Worker
2022-01-23 00:09:05 +00:00
16 changed files with 247 additions and 84 deletions

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2022 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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/subject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/accessibility_text_reading_preview_mail_subject"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/from"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:paddingTop="11dp"
android:text="@string/accessibility_text_reading_preview_mail_from"
android:textColor="?android:attr/textColorSecondary" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/accessibility_text_reading_preview_mail_content"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

View File

@@ -5216,6 +5216,12 @@
<string name="accessibility_introduction_title">About <xliff:g id="service" example="Select to Speak">%1$s</xliff:g></string>
<!-- Title for the accessibility preference to adjust the display size, font size, bold text, and high contrast text features. [CHAR LIMIT=NONE] -->
<string name="accessibility_text_reading_options_title">Text and reading options</string>
<!-- Subject for the mail content of the accessibility text reading preview. [CHAR LIMIT=NONE] -->
<string name="accessibility_text_reading_preview_mail_subject">Email: Plans for time machine, v2</string>
<!-- Message for the mail content of the accessibility text reading preview. [CHAR LIMIT=NONE] -->
<string name="accessibility_text_reading_preview_mail_from">From: bill@email.com</string>
<!-- Content for the mail content of the accessibility text reading preview. [CHAR LIMIT=NONE] -->
<string name="accessibility_text_reading_preview_mail_content">Good morning! Following up on our last conversation, Id like to check in on the progress of your time machine development plan. Will you be able to have a prototype ready to demo at E3 this year?</string>
<!-- Title for the footer text to explain what option accessibility service does. [CHAR LIMIT=35] -->
<string name="accessibility_screen_option">Options</string>
<!-- Summary for the accessibility preference to enable screen magnification. [CHAR LIMIT=25] -->
@@ -5481,6 +5487,8 @@
<string name="accessibility_service_primary_open_title">Open <xliff:g id="accessibility_app_name" example="TalkBack">%1$s</xliff:g></string>
<!-- Used in the accessibility service settings to show quick settings tooltips. [CHAR LIMIT=NONE] -->
<string name="accessibility_service_quick_settings_tooltips_content">Swipe down to quickly turn <xliff:g id="accessibility_app_name" example="TalkBack">%1$s</xliff:g> on or off in quick settings</string>
<!-- Used in the accessibility action for accessibility quick settings tooltips to dismiss. [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_tooltips_dismiss">Dismiss</string>
<!-- Used in the Color correction settings screen to control turning on/off the feature entirely [CHAR LIMIT=60] -->
<string name="accessibility_daltonizer_primary_switch_title">Use color correction</string>
<!-- Title for accessibility shortcut preference for color correction. [CHAR LIMIT=60] -->

View File

@@ -19,10 +19,14 @@ package com.android.settings.accessibility;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.AccessibilityDelegate;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
@@ -49,6 +53,25 @@ public class AccessibilityQuickSettingsTooltipWindow extends PopupWindow {
this.mContext = context;
}
private final AccessibilityDelegate mAccessibilityDelegate = new AccessibilityDelegate() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
final AccessibilityAction clickAction = new AccessibilityAction(
AccessibilityNodeInfo.ACTION_CLICK,
mContext.getString(R.string.accessibility_quick_settings_tooltips_dismiss));
info.addAction(clickAction);
}
@Override
public boolean performAccessibilityAction(View host, int action, Bundle args) {
if (action == AccessibilityNodeInfo.ACTION_CLICK) {
dismiss();
return true;
}
return super.performAccessibilityAction(host, action, args);
}
};
/**
* Sets up {@link #AccessibilityQuickSettingsTooltipWindow}'s layout and content.
*
@@ -74,13 +97,16 @@ public class AccessibilityQuickSettingsTooltipWindow extends PopupWindow {
final LayoutInflater inflater = mContext.getSystemService(LayoutInflater.class);
final View popupView =
inflater.inflate(R.layout.accessibility_qs_tooltips, /* root= */ null);
popupView.setFocusable(/* focusable= */ true);
popupView.setAccessibilityDelegate(mAccessibilityDelegate);
setContentView(popupView);
final TextView textView = getContentView().findViewById(R.id.qs_content);
textView.setText(text);
setWidth(getWindowWidthWith(textView));
setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
setFocusable(/* focusable= */ true);
setOutsideTouchable(/* touchable= */ true);
}
/**

View File

@@ -17,6 +17,12 @@
package com.android.settings.connecteddevice;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -54,5 +60,16 @@ public class NfcAndPaymentFragment extends DashboardFragment {
* For Search.
*/
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.nfc_and_payment_settings);
new BaseSearchIndexProvider(R.xml.nfc_and_payment_settings) {
@Override
protected boolean isPageSearchEnabled(Context context) {
final UserManager userManager = context.getSystemService(UserManager.class);
final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId());
if (myUserInfo.isGuest()) {
return false;
}
final PackageManager pm = context.getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_NFC);
}
};
}

View File

@@ -18,9 +18,8 @@ package com.android.settings.nfc;
import android.content.Context;
import android.nfc.NfcAdapter;
import android.provider.Settings;
import android.os.UserManager;
import androidx.annotation.VisibleForTesting;
import androidx.preference.SwitchPreference;
import com.android.settings.R;
@@ -32,10 +31,12 @@ import com.android.settings.R;
*/
public class SecureNfcEnabler extends BaseNfcEnabler {
private final SwitchPreference mPreference;
private final UserManager mUserManager;
public SecureNfcEnabler(Context context, SwitchPreference preference) {
super(context);
mPreference = preference;
mUserManager = context.getSystemService(UserManager.class);
}
@Override
@@ -48,7 +49,7 @@ public class SecureNfcEnabler extends BaseNfcEnabler {
case NfcAdapter.STATE_ON:
mPreference.setSummary(R.string.nfc_secure_toggle_summary);
mPreference.setChecked(mPreference.isChecked());
mPreference.setEnabled(true);
mPreference.setEnabled(isToggleable());
break;
case NfcAdapter.STATE_TURNING_ON:
mPreference.setEnabled(false);
@@ -58,4 +59,11 @@ public class SecureNfcEnabler extends BaseNfcEnabler {
break;
}
}
private boolean isToggleable() {
if (mUserManager.isGuestUser()) {
return false;
}
return true;
}
}

View File

@@ -22,6 +22,7 @@ import static org.mockito.Mockito.verify;
import android.content.Context;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.PopupWindow;
import androidx.test.core.app.ApplicationProvider;
@@ -53,52 +54,68 @@ public class AccessibilityQuickSettingsTooltipWindowTest {
private static final String TEST_PACKAGE_NAME = "com.test.package";
private final Context mContext = ApplicationProvider.getApplicationContext();
private AccessibilityQuickSettingsTooltipWindow mToolTipView;
private AccessibilityQuickSettingsTooltipWindow mTooltipView;
private View mView;
@Before
public void setUp() {
mToolTipView = new AccessibilityQuickSettingsTooltipWindow(mContext);
mTooltipView = new AccessibilityQuickSettingsTooltipWindow(mContext);
mView = new View(RuntimeEnvironment.application);
}
@Test
public void initToolTipView_atMostAvailableTextWidth() {
public void initTooltipView_atMostAvailableTextWidth() {
final String quickSettingsTooltipsContent = mContext.getString(
R.string.accessibility_service_quick_settings_tooltips_content, TEST_PACKAGE_NAME);
mToolTipView.setup(quickSettingsTooltipsContent);
mTooltipView.setup(quickSettingsTooltipsContent);
final int getMaxWidth = mToolTipView.getAvailableWindowWidth();
assertThat(mToolTipView.getWidth()).isAtMost(getMaxWidth);
final int getMaxWidth = mTooltipView.getAvailableWindowWidth();
assertThat(mTooltipView.getWidth()).isAtMost(getMaxWidth);
}
@Test
public void showToolTipView_success() {
mToolTipView.setup(TEST_PACKAGE_NAME);
public void showTooltipView_success() {
mTooltipView.setup(TEST_PACKAGE_NAME);
assertThat(getLatestPopupWindow()).isNull();
mToolTipView.showAtTopCenter(mView);
mTooltipView.showAtTopCenter(mView);
assertThat(getLatestPopupWindow()).isSameInstanceAs(mToolTipView);
assertThat(getLatestPopupWindow()).isSameInstanceAs(mTooltipView);
}
@Test
public void dismiss_toolTipViewShown_shouldInvokeCallbackAndNotShowing() {
mToolTipView.setup(TEST_PACKAGE_NAME);
mToolTipView.setOnDismissListener(mMockOnDismissListener);
mToolTipView.showAtTopCenter(mView);
public void accessibilityClickActionOnTooltipViewShown_shouldInvokeCallbackAndNotShowing() {
mTooltipView.setup(TEST_PACKAGE_NAME);
mTooltipView.setOnDismissListener(mMockOnDismissListener);
mTooltipView.showAtTopCenter(mView);
mToolTipView.dismiss();
final boolean isActionPerformed =
mTooltipView.getContentView().performAccessibilityAction(
AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK.getId(),
/* arguments= */ null);
assertThat(isActionPerformed).isTrue();
verify(mMockOnDismissListener).onDismiss();
assertThat(getLatestPopupWindow().isShowing()).isFalse();
}
@Test
public void dismiss_tooltipViewShown_shouldInvokeCallbackAndNotShowing() {
mTooltipView.setup(TEST_PACKAGE_NAME);
mTooltipView.setOnDismissListener(mMockOnDismissListener);
mTooltipView.showAtTopCenter(mView);
mTooltipView.dismiss();
verify(mMockOnDismissListener).onDismiss();
assertThat(getLatestPopupWindow().isShowing()).isFalse();
}
@Test
public void waitAutoCloseDelayTime_toolTipViewShown_shouldInvokeCallbackAndNotShowing() {
mToolTipView.setup(TEST_PACKAGE_NAME, /* closeDelayTimeMillis= */ 1);
mToolTipView.setOnDismissListener(mMockOnDismissListener);
mToolTipView.showAtTopCenter(mView);
public void waitAutoCloseDelayTime_tooltipViewShown_shouldInvokeCallbackAndNotShowing() {
mTooltipView.setup(TEST_PACKAGE_NAME, /* closeDelayTimeMillis= */ 1);
mTooltipView.setOnDismissListener(mMockOnDismissListener);
mTooltipView.showAtTopCenter(mView);
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();

View File

@@ -18,28 +18,31 @@ package com.android.settings.homepage.contextualcards.conditional;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.WifiManager;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.homepage.contextualcards.ContextualCard;
import com.android.settings.testutils.shadow.ShadowWifiManager;
import org.junit.Before;
import org.junit.Ignore;
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;
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowWifiManager.class})
public class HotspotConditionControllerTest {
private static final String WIFI_AP_SSID = "Test Hotspot";
@Mock
private WifiManager mWifiManager;
@Mock
private ConditionManager mConditionManager;
@@ -48,12 +51,14 @@ public class HotspotConditionControllerTest {
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
mController = new HotspotConditionController(mContext, mConditionManager);
}
@Test
@Ignore
public void buildContextualCard_hasWifiAp_shouldHaveWifiApSsid() {
setupSoftApConfiguration();
@@ -63,7 +68,6 @@ public class HotspotConditionControllerTest {
}
@Test
@Ignore
public void buildContextualCard_noWifiAp_shouldHaveEmptySsid() {
final ContextualCard card = mController.buildContextualCard();
@@ -73,6 +77,6 @@ public class HotspotConditionControllerTest {
private void setupSoftApConfiguration() {
final SoftApConfiguration wifiApConfig = new SoftApConfiguration.Builder()
.setSsid(WIFI_AP_SSID).build();
mContext.getSystemService(WifiManager.class).setSoftApConfiguration(wifiApConfig);
when(mWifiManager.getSoftApConfiguration()).thenReturn(wifiApConfig);
}
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.network;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -33,6 +34,7 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.wifi.WifiConnectionPreferenceController;
import com.android.settings.wifi.WifiEntryPreference;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -40,7 +42,6 @@ import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -50,7 +51,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
@Ignore
public class WifiConnectionPreferenceControllerTest {
private static final String KEY = "wifi_connection";
@@ -72,6 +72,10 @@ public class WifiConnectionPreferenceControllerTest {
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
.thenReturn(mWifiPickerTracker);
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
when(mScreen.findPreference(eq(KEY))).thenReturn(mPreferenceCategory);

View File

@@ -18,16 +18,21 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.view.View;
import androidx.test.core.app.ApplicationProvider;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
@@ -44,37 +49,36 @@ public class AddNetworkFragmentTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
Context context = spy(ApplicationProvider.getApplicationContext());
when(context.getSystemService(Context.WIFI_SERVICE)).thenReturn(mock(WifiManager.class));
mAddNetworkFragment = spy(new AddNetworkFragment());
when(mAddNetworkFragment.getContext()).thenReturn(context);
FragmentController.setupFragment(mAddNetworkFragment);
}
@Test
@Ignore
public void getMetricsCategory_shouldReturnAddNetwork() {
assertThat(mAddNetworkFragment.getMetricsCategory()).isEqualTo(
MetricsEvent.SETTINGS_WIFI_ADD_NETWORK);
}
@Test
@Ignore
public void getMode_shouldBeModeConnected() {
assertThat(mAddNetworkFragment.getMode()).isEqualTo(WifiConfigUiBase2.MODE_CONNECT);
}
@Test
@Ignore
public void launchFragment_shouldShowSubmitButton() {
assertThat(mAddNetworkFragment.getSubmitButton()).isNotNull();
}
@Test
@Ignore
public void launchFragment_shouldShowCancelButton() {
assertThat(mAddNetworkFragment.getCancelButton()).isNotNull();
}
@Test
@Ignore
public void onClickSubmitButton_shouldHandleSubmitAction() {
View submitButton = mAddNetworkFragment.getView().findViewById(
AddNetworkFragment.SUBMIT_BUTTON_ID);
@@ -85,7 +89,6 @@ public class AddNetworkFragmentTest {
}
@Test
@Ignore
public void onClickCancelButton_shouldHandleCancelAction() {
View cancelButton = mAddNetworkFragment.getView().findViewById(
AddNetworkFragment.CANCEL_BUTTON_ID);
@@ -96,7 +99,6 @@ public class AddNetworkFragmentTest {
}
@Test
@Ignore
public void dispatchSubmit_shouldHandleSubmitAction() {
mAddNetworkFragment.dispatchSubmit();

View File

@@ -18,16 +18,21 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import androidx.test.core.app.ApplicationProvider;
import com.android.wifitrackerlib.NetworkDetailsTracker;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -36,7 +41,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.androidx.fragment.FragmentController;
@RunWith(RobolectricTestRunner.class)
@Ignore
public class ConfigureWifiEntryFragmentTest {
private static final String KEY_SSID = "key_ssid";
@@ -50,13 +54,16 @@ public class ConfigureWifiEntryFragmentTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
Bundle bundle = new Bundle();
Context context = spy(ApplicationProvider.getApplicationContext());
when(context.getSystemService(Context.WIFI_SERVICE)).thenReturn(mock(WifiManager.class));
Bundle bundle = new Bundle();
bundle.putString(KEY_SSID, "Test AP");
bundle.putInt(KEY_SECURITY, 1 /* WEP */);
mConfigureWifiEntryFragment = spy(new ConfigureWifiEntryFragment());
mConfigureWifiEntryFragment.setArguments(bundle);
mConfigureWifiEntryFragment.mNetworkDetailsTracker = mNetworkDetailsTracker;
when(mConfigureWifiEntryFragment.getContext()).thenReturn(context);
FragmentController.setupFragment(mConfigureWifiEntryFragment);
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -35,13 +36,12 @@ import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE;
import com.android.settingslib.wifi.WifiTracker;
import com.android.settingslib.wifi.WifiTrackerFactory;
import com.android.wifitrackerlib.WifiPickerTracker;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
@@ -55,7 +55,6 @@ import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
@Ignore
@Config(shadows = ShadowAlertDialogCompat.class)
public class NetworkRequestDialogActivityTest {
@@ -69,11 +68,11 @@ public class NetworkRequestDialogActivityTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
WifiTracker wifiTracker = mock(WifiTracker.class);
WifiTrackerFactory.setTestingWifiTracker(wifiTracker);
FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
.thenReturn(mock(WifiPickerTracker.class));
NetworkRequestDialogActivity activity =
Robolectric.setupActivity(NetworkRequestDialogActivity.class);

View File

@@ -18,6 +18,8 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -38,15 +40,16 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@@ -56,7 +59,6 @@ import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
@Ignore
@Config(shadows = ShadowAlertDialogCompat.class)
public class NetworkRequestDialogFragmentTest {
@@ -69,6 +71,12 @@ public class NetworkRequestDialogFragmentTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
.thenReturn(mock(WifiPickerTracker.class));
mActivity = Robolectric.buildActivity(FragmentActivity.class,
new Intent().putExtra(NetworkRequestDialogFragment.EXTRA_APP_NAME,
TEST_APP_NAME)).setup().get();

View File

@@ -19,9 +19,12 @@ package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.internal.verification.VerificationModeFactory.times;
import android.content.DialogInterface;
@@ -32,22 +35,21 @@ import android.widget.Button;
import androidx.appcompat.app.AlertDialog;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE;
import com.android.settingslib.wifi.WifiTracker;
import com.android.settingslib.wifi.WifiTrackerFactory;
import com.android.wifitrackerlib.WifiPickerTracker;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Ignore
@Config(shadows = ShadowAlertDialogCompat.class)
public class NetworkRequestErrorDialogFragmentTest {
@@ -56,8 +58,11 @@ public class NetworkRequestErrorDialogFragmentTest {
@Before
public void setUp() {
WifiTracker wifiTracker = mock(WifiTracker.class);
WifiTrackerFactory.setTestingWifiTracker(wifiTracker);
MockitoAnnotations.initMocks(this);
FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
.thenReturn(mock(WifiPickerTracker.class));
mActivity = Robolectric.setupActivity(NetworkRequestDialogActivity.class);
mFragment = spy(NetworkRequestErrorDialogFragment.newInstance());

View File

@@ -22,6 +22,7 @@ import static com.android.settings.wifi.WifiConfigController.PRIVACY_SPINNER_IND
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
@@ -45,19 +46,19 @@ import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settingslib.wifi.AccessPoint;
import org.junit.Before;
import org.junit.Ignore;
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;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowInputMethodManager;
@@ -66,7 +67,6 @@ import org.robolectric.shadows.ShadowSubscriptionManager;
import java.util.Arrays;
@RunWith(RobolectricTestRunner.class)
@Ignore
@Config(shadows = ShadowConnectivityManager.class)
public class WifiConfigControllerTest {
@@ -96,7 +96,8 @@ public class WifiConfigControllerTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mContext = spy(ApplicationProvider.getApplicationContext());
when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mock(WifiManager.class));
when(mConfigUiBase.getContext()).thenReturn(mContext);
when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
mView = LayoutInflater.from(mContext).inflate(R.layout.wifi_dialog, null);

View File

@@ -27,8 +27,9 @@ import static org.mockito.Mockito.spy;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import androidx.core.graphics.drawable.IconCompat;
@@ -45,9 +46,10 @@ import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import org.junit.Before;
import org.junit.Ignore;
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;
import org.robolectric.annotation.Config;
@@ -55,29 +57,40 @@ import org.robolectric.annotation.Config;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
@Ignore
@Config(shadows = ShadowConnectivityManager.class)
public class ContextualWifiSliceTest {
private static final String SSID = "123";
@Mock
private WifiManager mWifiManager;
@Mock
private WifiInfo mWifiInfo;
@Mock
private Network mNetwork;
private Context mContext;
private ContentResolver mResolver;
private WifiManager mWifiManager;
private ContextualWifiSlice mWifiSlice;
private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mResolver = mock(ContentResolver.class);
mFeatureFactory = FakeFeatureFactory.setupForTest();
mFeatureFactory.slicesFeatureProvider = new SlicesFeatureProviderImpl();
mFeatureFactory.slicesFeatureProvider.newUiSession();
doReturn(mResolver).when(mContext).getContentResolver();
mWifiManager = mContext.getSystemService(WifiManager.class);
doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
doReturn(true).when(mWifiManager).isWifiEnabled();
doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState();
doReturn(mWifiInfo).when(mWifiManager).getConnectionInfo();
doReturn(SSID).when(mWifiInfo).getSSID();
doReturn(mNetwork).when(mWifiManager).getCurrentNetwork();
// Set-up specs for SliceMetadata.
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
mWifiManager.setWifiEnabled(true);
mWifiSlice = new ContextualWifiSlice(mContext);
}
@@ -121,7 +134,7 @@ public class ContextualWifiSliceTest {
mWifiSlice.sApRowCollapsed = true;
connectToWifi(makeValidatedNetworkCapabilities());
mWifiManager.disconnect();
doReturn(null).when(mWifiManager).getCurrentNetwork();
final Slice wifiSlice = mWifiSlice.getSlice();
assertWifiHeader(wifiSlice);
@@ -138,11 +151,7 @@ public class ContextualWifiSliceTest {
}
private void connectToWifi(NetworkCapabilities nc) {
final WifiConfiguration config = new WifiConfiguration();
config.SSID = "123";
mWifiManager.connect(config, null /* listener */);
ShadowConnectivityManager.getShadow().setNetworkCapabilities(
mWifiManager.getCurrentNetwork(), nc);
ShadowConnectivityManager.getShadow().setNetworkCapabilities(mNetwork, nc);
}
private NetworkCapabilities makeValidatedNetworkCapabilities() {

View File

@@ -50,9 +50,10 @@ import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry.ConnectedState;
import org.junit.Before;
import org.junit.Ignore;
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;
import org.robolectric.annotation.Config;
@@ -63,7 +64,6 @@ import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
@Ignore
@Config(shadows = WifiSliceTest.ShadowSliceBackgroundWorker.class)
public class WifiSliceTest {
@@ -71,21 +71,24 @@ public class WifiSliceTest {
private static final String AP2_NAME = "ap2";
private static final String AP3_NAME = "ap3";
@Mock
private WifiManager mWifiManager;
private Context mContext;
private ContentResolver mResolver;
private WifiManager mWifiManager;
private WifiSlice mWifiSlice;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mResolver = mock(ContentResolver.class);
doReturn(mResolver).when(mContext).getContentResolver();
mWifiManager = mContext.getSystemService(WifiManager.class);
doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState();
// Set-up specs for SliceMetadata.
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
mWifiManager.setWifiEnabled(true);
mWifiSlice = new WifiSlice(mContext);
}
@@ -108,7 +111,7 @@ public class WifiSliceTest {
@Test
public void getWifiSlice_wifiOff_shouldReturnSingleRow() {
mWifiManager.setWifiEnabled(false);
doReturn(WifiManager.WIFI_STATE_DISABLED).when(mWifiManager).getWifiState();
final Slice wifiSlice = mWifiSlice.getSlice();