Merge "Update SlicePreferenceController"
diff --git a/res/layout/choose_lock_password.xml b/res/layout/choose_lock_password.xml
index 68583b5..b779526 100644
--- a/res/layout/choose_lock_password.xml
+++ b/res/layout/choose_lock_password.xml
@@ -17,11 +17,11 @@
<com.google.android.setupdesign.GlifLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/setup_wizard_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:icon="@drawable/ic_lock"
android:importantForAutofill="noExcludeDescendants"
- settings:sucFooter="@layout/choose_lock_password_footer"
settings:sucHeaderText="@string/lockpassword_choose_your_screen_lock_header">
<LinearLayout
diff --git a/res/layout/choose_lock_password_footer.xml b/res/layout/choose_lock_password_footer.xml
deleted file mode 100644
index 58d80cf..0000000
--- a/res/layout/choose_lock_password_footer.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2017 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.
--->
-
-<!-- TODO: Use aapt:attr when it is fixed (b/36809755) -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/SudGlifButtonBar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <!-- left : skip -->
- <Button android:id="@+id/skip_button"
- style="@style/SudGlifButton.Secondary"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/skip_label"
- android:visibility="gone" />
-
-
- <!-- left : clear -->
- <Button android:id="@+id/clear_button"
- style="@style/SudGlifButton.Secondary"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone"
- android:text="@string/lockpassword_clear_label" />
-
- <Space
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <!-- right : continue -->
- <Button android:id="@+id/next_button"
- style="@style/SudGlifButton.Primary"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/next_label" />
-
-</LinearLayout>
diff --git a/res/layout/network_request_dialog_title.xml b/res/layout/network_request_dialog_title.xml
index fa01085..186768e 100644
--- a/res/layout/network_request_dialog_title.xml
+++ b/res/layout/network_request_dialog_title.xml
@@ -26,7 +26,8 @@
android:id="@+id/network_request_title_text"
android:layout_width="0dp"
android:layout_height="match_parent"
- android:paddingLeft="16dip"
+ android:paddingLeft="24dp"
+ android:paddingTop="18dp"
android:layout_weight="1"
android:textSize="18sp"
android:gravity="center_vertical"
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 60b23c8..100521e 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -174,6 +174,20 @@
android:layout_height="1dip"
android:background="?android:attr/listDivider" />
+ <!-- Enable/Disable CBRS data -->
+ <Switch android:id="@+id/cbrs_data_switch"
+ android:textSize="14sp"
+ android:layout_marginTop="8dip"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/cbrs_data_switch_string" />
+
+ <!-- Horizontal Rule -->
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dip"
+ android:background="?android:attr/listDivider" />
+
<!-- Ping stats -->
<Button android:id="@+id/ping_test"
android:textSize="14sp"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a082074..f77c10d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -63,6 +63,9 @@
<!-- EAB provisioning flag on. Only shown in diagnostic screen, so precise translation is not needed. -->
<string name="eab_provisioned_switch_string">EAB/Presence Provisioned</string>
+ <!-- Cbrs enable disable flag. Only shown in diagnostic screen, so precise translation is not needed -->
+ <string name="cbrs_data_switch_string">Cbrs Data</string>
+
<!-- Title for controlling on/off for Mobile phone's radio power. Only shown in diagnostic screen, so precise translation is not needed. -->
<string name="radio_info_radio_power">Mobile Radio Power</string>
@@ -10455,6 +10458,8 @@
<string name="network_connection_timeout_dialog_ok">Try again</string>
<!-- Message for Network connection error state Dialog [CHAR LIMIT=NONE] -->
<string name="network_connection_errorstate_dialog_message">Something came up. The application has cancelled the request to choose a device.</string>
+ <!-- Toast message when connection is successful [CHAR LIMIT=30] -->
+ <string name="network_connection_connect_successful">Connection successful</string>
<!-- Summary for bluetooth devices count in Bluetooth devices slice. [CHAR LIMIT=NONE] -->
<plurals name="show_bluetooth_devices">
diff --git a/src/com/android/settings/RadioInfo.java b/src/com/android/settings/RadioInfo.java
index 2791efa..251bfbc 100644
--- a/src/com/android/settings/RadioInfo.java
+++ b/src/com/android/settings/RadioInfo.java
@@ -213,6 +213,7 @@
private Switch imsVtProvisionedSwitch;
private Switch imsWfcProvisionedSwitch;
private Switch eabProvisionedSwitch;
+ private Switch cbrsDataSwitch;
private Spinner preferredNetworkType;
private Spinner cellInfoRefreshRateSpinner;
@@ -450,6 +451,9 @@
imsWfcProvisionedSwitch = (Switch) findViewById(R.id.wfc_provisioned_switch);
eabProvisionedSwitch = (Switch) findViewById(R.id.eab_provisioned_switch);
+ cbrsDataSwitch = (Switch) findViewById(R.id.cbrs_data_switch);
+ cbrsDataSwitch.setVisibility(isCbrsSupported() ? View.VISIBLE : View.GONE);
+
radioPowerOnSwitch = (Switch) findViewById(R.id.radio_power);
mDownlinkKbps = (TextView) findViewById(R.id.dl_kbps);
@@ -526,6 +530,11 @@
imsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener);
eabProvisionedSwitch.setOnCheckedChangeListener(mEabCheckedChangeListener);
+ if (isCbrsSupported()) {
+ cbrsDataSwitch.setChecked(getCbrsDataState());
+ cbrsDataSwitch.setOnCheckedChangeListener(mCbrsDataSwitchChangeListener);
+ }
+
mTelephonyManager.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_CALL_STATE
//b/27803938 - RadioInfo currently cannot read PRECISE_CALL_STATE
@@ -1483,4 +1492,38 @@
}
};
+ boolean isCbrsSupported() {
+ return getResources().getBoolean(
+ com.android.internal.R.bool.config_cbrs_supported);
+ }
+
+ void updateCbrsDataState(boolean state) {
+ Log.d(TAG, "setCbrsDataSwitchState() state:" + ((state)? "on":"off"));
+ if (mTelephonyManager != null) {
+ QueuedWork.queue(new Runnable() {
+ public void run() {
+ mTelephonyManager.setOpportunisticNetworkState(state);
+ cbrsDataSwitch.setChecked(getCbrsDataState());
+ }
+ }, false);
+ }
+ }
+
+ boolean getCbrsDataState() {
+ boolean state = false;
+ if (mTelephonyManager != null) {
+ state = mTelephonyManager.isOpportunisticNetworkEnabled();
+ }
+ Log.d(TAG, "getCbrsDataState() state:" +((state)? "on":"off"));
+ return state;
+ }
+
+ OnCheckedChangeListener mCbrsDataSwitchChangeListener = new OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ updateCbrsDataState(isChecked);
+ }
+ };
+
+
}
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 6ff93f3..0ae664c 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -47,7 +47,6 @@
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
-import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
@@ -69,6 +68,8 @@
import com.android.settings.notification.RedactionInterstitial;
import com.android.settings.widget.ImeAwareEditText;
+import com.google.android.setupcompat.item.FooterButton;
+import com.google.android.setupcompat.template.ButtonFooterMixin;
import com.google.android.setupdesign.GlifLayout;
import java.util.ArrayList;
@@ -168,8 +169,7 @@
}
public static class ChooseLockPasswordFragment extends InstrumentedFragment
- implements OnClickListener, OnEditorActionListener, TextWatcher,
- SaveAndFinishWorker.Listener {
+ implements OnEditorActionListener, TextWatcher, SaveAndFinishWorker.Listener {
private static final String KEY_FIRST_PIN = "first_pin";
private static final String KEY_UI_STAGE = "ui_stage";
private static final String KEY_CURRENT_PASSWORD = "current_password";
@@ -210,9 +210,8 @@
private String mFirstPin;
private RecyclerView mPasswordRestrictionView;
protected boolean mIsAlphaMode;
- protected Button mSkipButton;
- private Button mClearButton;
- private Button mNextButton;
+ protected FooterButton mSkipOrClearButton;
+ private FooterButton mNextButton;
private TextView mMessage;
private TextChangedHandler mTextChangedHandler;
@@ -408,13 +407,25 @@
ViewGroup container = view.findViewById(R.id.password_container);
container.setOpticalInsets(Insets.NONE);
- mSkipButton = view.findViewById(R.id.skip_button);
- mSkipButton.setOnClickListener(this);
- mNextButton = view.findViewById(R.id.next_button);
- mNextButton.setOnClickListener(this);
- mClearButton = view.findViewById(R.id.clear_button);
- mClearButton.setOnClickListener(this);
-
+ final ButtonFooterMixin mixin = mLayout.getMixin(ButtonFooterMixin.class);
+ mixin.setSecondaryButton(
+ new FooterButton.Builder(getActivity())
+ .setText(R.string.lockpassword_clear_label)
+ .setListener(this::onSkipOrClearButtonClick)
+ .setButtonType(FooterButton.ButtonType.SKIP)
+ .setTheme(R.style.SudGlifButton_Secondary)
+ .build()
+ );
+ mixin.setPrimaryButton(
+ new FooterButton.Builder(getActivity())
+ .setText(R.string.next_label)
+ .setListener(this::onNextButtonClick)
+ .setButtonType(FooterButton.ButtonType.NEXT)
+ .setTheme(R.style.SudGlifButton_Primary)
+ .build()
+ );
+ mSkipOrClearButton = mixin.getSecondaryButton();
+ mNextButton = mixin.getPrimaryButton();
mMessage = view.findViewById(R.id.message);
if (mForFingerprint) {
@@ -777,19 +788,15 @@
}
protected void setNextText(int text) {
- mNextButton.setText(text);
+ mNextButton.setText(getActivity(), text);
}
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.next_button:
- handleNext();
- break;
+ protected void onSkipOrClearButtonClick(View view) {
+ mPasswordEntry.setText("");
+ }
- case R.id.clear_button:
- mPasswordEntry.setText("");
- break;
- }
+ protected void onNextButtonClick(View view) {
+ handleNext();
}
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
@@ -894,13 +901,12 @@
mPasswordRequirementAdapter.setRequirements(messages);
// Enable/Disable the next button accordingly.
setNextEnabled(errorCode == NO_ERROR);
- mClearButton.setVisibility(View.GONE);
} else {
// Hide password requirement view when we are just asking user to confirm the pw.
mPasswordRestrictionView.setVisibility(View.GONE);
setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType())));
setNextEnabled(canInput && length >= mPasswordMinLength);
- mClearButton.setVisibility(toVisibility(canInput && length > 0));
+ mSkipOrClearButton.setVisibility(toVisibility(canInput && length > 0));
}
int message = mUiStage.getMessage(mIsAlphaMode, getStageType());
if (message != 0) {
diff --git a/src/com/android/settings/password/SetupChooseLockPassword.java b/src/com/android/settings/password/SetupChooseLockPassword.java
index 2c443c2..213351b 100644
--- a/src/com/android/settings/password/SetupChooseLockPassword.java
+++ b/src/com/android/settings/password/SetupChooseLockPassword.java
@@ -72,8 +72,11 @@
public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment
implements OnLockTypeSelectedListener {
+ private static final String TAG_SKIP_SCREEN_LOCK_DIALOG = "skip_screen_lock_dialog";
+
@Nullable
private Button mOptionsButton;
+ private boolean mLeftButtonIsSkip;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
@@ -92,26 +95,22 @@
if (showOptionsButton && anyOptionsShown) {
mOptionsButton = view.findViewById(R.id.screen_lock_options);
mOptionsButton.setVisibility(View.VISIBLE);
- mOptionsButton.setOnClickListener(this);
+ mOptionsButton.setOnClickListener((btn) ->
+ ChooseLockTypeDialogFragment.newInstance(mUserId)
+ .show(getChildFragmentManager(), TAG_SKIP_SCREEN_LOCK_DIALOG));
}
}
@Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.screen_lock_options:
- ChooseLockTypeDialogFragment.newInstance(mUserId)
- .show(getChildFragmentManager(), null);
- break;
- case R.id.skip_button:
- SetupSkipDialog dialog = SetupSkipDialog.newInstance(
- getActivity().getIntent()
- .getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
- dialog.show(getFragmentManager());
- break;
- default:
- super.onClick(v);
+ protected void onSkipOrClearButtonClick(View view) {
+ if (mLeftButtonIsSkip) {
+ SetupSkipDialog dialog = SetupSkipDialog.newInstance(
+ getActivity().getIntent()
+ .getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
+ dialog.show(getFragmentManager());
+ return;
}
+ super.onSkipOrClearButtonClick(view);
}
@Override
@@ -137,9 +136,11 @@
super.updateUi();
// Show the skip button during SUW but not during Settings > Biometric Enrollment
if (mUiStage == Stage.Introduction) {
- mSkipButton.setVisibility(View.VISIBLE);
+ mSkipOrClearButton.setText(getActivity(), R.string.skip_label);
+ mLeftButtonIsSkip = true;
} else {
- mSkipButton.setVisibility(View.GONE);
+ mSkipOrClearButton.setText(getActivity(), R.string.lockpassword_clear_label);
+ mLeftButtonIsSkip = false;
}
if (mOptionsButton != null) {
diff --git a/src/com/android/settings/password/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java
index 736cd00..3a69844 100644
--- a/src/com/android/settings/password/SetupChooseLockPattern.java
+++ b/src/com/android/settings/password/SetupChooseLockPattern.java
@@ -57,6 +57,8 @@
public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment
implements ChooseLockTypeDialogFragment.OnLockTypeSelectedListener {
+ private static final String TAG_SKIP_SCREEN_LOCK_DIALOG = "skip_screen_lock_dialog";
+
@Nullable
private Button mOptionsButton;
private boolean mLeftButtonIsSkip;
@@ -69,7 +71,7 @@
mOptionsButton = view.findViewById(R.id.screen_lock_options);
mOptionsButton.setOnClickListener((btn) ->
ChooseLockTypeDialogFragment.newInstance(mUserId)
- .show(getChildFragmentManager(), null));
+ .show(getChildFragmentManager(), TAG_SKIP_SCREEN_LOCK_DIALOG));
}
// Show the skip button during SUW but not during Settings > Biometric Enrollment
mSkipOrClearButton.setOnClickListener(this::onSkipOrClearButtonClick);
diff --git a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
index 0ed8544..921552d 100644
--- a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
+++ b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
@@ -16,6 +16,7 @@
package com.android.settings.wifi;
+import android.app.Activity;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -29,6 +30,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -36,6 +38,7 @@
import android.widget.BaseAdapter;
import android.widget.ProgressBar;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
@@ -65,15 +68,9 @@
/** Message sent to us to stop scanning wifi and pop up timeout dialog. */
private static final int MESSAGE_STOP_SCAN_WIFI_LIST = 0;
- /** Message sent to us to finish activity. */
- private static final int MESSAGE_FINISH_ACTIVITY = 1;
-
/** Spec defines there should be 5 wifi ap on the list at most. */
private static final int MAX_NUMBER_LIST_ITEM = 5;
- /** Holding time to let user be aware that selected wifi ap is connected */
- private static final int DELAY_TIME_USER_AWARE_CONNECTED_MS = 1 * 1000;
-
/** Delayed time to stop scanning wifi. */
private static final int DELAY_TIME_STOP_SCAN_MS = 30 * 1000;
@@ -184,7 +181,6 @@
public void onDestroy() {
super.onDestroy();
- mHandler.removeMessages(MESSAGE_FINISH_ACTIVITY);
if (mFilterWifiTracker != null) {
mFilterWifiTracker.onDestroy();
mFilterWifiTracker = null;
@@ -215,10 +211,7 @@
switch (msg.what) {
case MESSAGE_STOP_SCAN_WIFI_LIST:
removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
- stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE.TIME_OUT);
- break;
- case MESSAGE_FINISH_ACTIVITY:
- stopScanningAndMaybePopErrorDialog(/* ERROR_DIALOG_TYPE */ null);
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.TIME_OUT);
break;
default:
// Do nothing.
@@ -227,29 +220,21 @@
}
};
- protected void stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE type) {
+ protected void stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE type) {
// Dismisses current dialog.
final Dialog dialog = getDialog();
if (dialog != null && dialog.isShowing()) {
dismiss();
}
- if (type == null) {
- // If no error, finishes activity.
- if (getActivity() != null) {
- getActivity().finish();
- }
- } else {
- // Throws error dialog.
- final NetworkRequestErrorDialogFragment fragment = NetworkRequestErrorDialogFragment
- .newInstance();
- final Bundle bundle = new Bundle();
- bundle.putSerializable(NetworkRequestErrorDialogFragment.DIALOG_TYPE, type);
- fragment.setArguments(bundle);
- fragment.show(getActivity().getSupportFragmentManager(),
- NetworkRequestDialogFragment.class.getSimpleName());
- }
-
+ // Throws error dialog.
+ final NetworkRequestErrorDialogFragment fragment = NetworkRequestErrorDialogFragment
+ .newInstance();
+ final Bundle bundle = new Bundle();
+ bundle.putSerializable(NetworkRequestErrorDialogFragment.DIALOG_TYPE, type);
+ fragment.setArguments(bundle);
+ fragment.show(getActivity().getSupportFragmentManager(),
+ NetworkRequestDialogFragment.class.getSimpleName());
}
@Override
@@ -287,7 +272,13 @@
final TextView summary = view.findViewById(android.R.id.summary);
if (summary != null) {
- summary.setText(accessPoint.getSettingsSummary());
+ final String summaryString = accessPoint.getSettingsSummary();
+ if (TextUtils.isEmpty(summaryString)) {
+ summary.setVisibility(View.GONE);
+ } else {
+ summary.setVisibility(View.VISIBLE);
+ summary.setText(summaryString);
+ }
}
final PreferenceImageView imageView = view.findViewById(android.R.id.icon);
@@ -306,7 +297,7 @@
@Override
public void onAbort() {
- stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
}
@Override
@@ -354,24 +345,17 @@
@Override
public void onUserSelectionConnectSuccess(WifiConfiguration wificonfiguration) {
- // Removes the progress icon.
- final Dialog dialog = getDialog();
- if (dialog != null) {
- final View view = dialog.findViewById(R.id.network_request_title_progress);
- if (view != null) {
- view.setVisibility(View.GONE);
- }
+ final Activity activity = getActivity();
+ if (activity != null) {
+ Toast.makeText(activity, R.string.network_connection_connect_successful,
+ Toast.LENGTH_SHORT).show();
+ activity.finish();
}
-
- // Posts delay to finish self since connection is success.
- mHandler.removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
- mHandler.sendEmptyMessageDelayed(MESSAGE_FINISH_ACTIVITY,
- DELAY_TIME_USER_AWARE_CONNECTED_MS);
}
@Override
public void onUserSelectionConnectFailure(WifiConfiguration wificonfiguration) {
- stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
}
private final class FilterWifiTracker {
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
index bee66cc..946ab69 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
@@ -37,6 +37,9 @@
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settings.widget.ScrollToParentEditText;
+import com.google.android.setupcompat.PartnerCustomizationLayout;
+import com.google.android.setupcompat.template.ButtonFooterMixin;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -137,17 +140,19 @@
public void createActivity_skipButtonInIntroductionStage_shouldBeVisible() {
SetupChooseLockPassword activity = createSetupChooseLockPassword();
- Button skipButton = activity.findViewById(R.id.skip_button);
- assertThat(skipButton).isNotNull();
- assertThat(skipButton.getVisibility()).isEqualTo(View.VISIBLE);
+ final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
+ final Button skipOrClearButton =
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView();
+ assertThat(skipOrClearButton).isNotNull();
+ assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
- skipButton.performClick();
- AlertDialog chooserDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ skipOrClearButton.performClick();
+ final AlertDialog chooserDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(chooserDialog).isNotNull();
}
@Test
- public void createActivity_inputPasswordInConfirmStage_clearButtonShouldBeVisible() {
+ public void createActivity_inputPasswordInConfirmStage_clearButtonShouldBeShown() {
SetupChooseLockPassword activity = createSetupChooseLockPassword();
SetupChooseLockPasswordFragment fragment =
@@ -158,15 +163,17 @@
passwordEntry.setText("");
fragment.updateStage(Stage.NeedToConfirm);
- Button skipButton = activity.findViewById(R.id.skip_button);
- Button clearButton = activity.findViewById(R.id.clear_button);
- assertThat(skipButton.getVisibility()).isEqualTo(View.GONE);
- assertThat(clearButton.getVisibility()).isEqualTo(View.GONE);
+ final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
+ final Button skipOrClearButton =
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView();
+ assertThat(skipOrClearButton.isEnabled()).isTrue();
+ assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.GONE);
passwordEntry.setText("1234");
fragment.updateUi();
- assertThat(skipButton.getVisibility()).isEqualTo(View.GONE);
- assertThat(clearButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(skipOrClearButton.getText())
+ .isEqualTo(application.getString(R.string.lockpassword_clear_label));
}
private SetupChooseLockPassword createSetupChooseLockPassword() {
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
index 17516e9..d84d665 100644
--- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
@@ -119,7 +119,7 @@
ERROR_DIALOG_TYPE errorType = null;
@Override
- public void stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE type) {
+ public void stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE type) {
bCalledStopAndPop = true;
errorType = type;
}
@@ -152,25 +152,19 @@
}
@Test
- public void updateAccessPointList_onUserSelectionConnectSuccess_shouldCloseTheDialog() {
+ public void updateAccessPointList_onUserSelectionConnectSuccess_shouldFinishActivity() {
// Assert
- FakeNetworkRequestDialogFragment fakeFragment = new FakeNetworkRequestDialogFragment();
- FakeNetworkRequestDialogFragment spyFakeFragment = spy(fakeFragment);
-
- List<AccessPoint> accessPointList = createAccessPointList();
- when(spyFakeFragment.getAccessPointList()).thenReturn(accessPointList);
-
- spyFakeFragment.show(mActivity.getSupportFragmentManager(), null);
+ final FragmentActivity spyActivity = spy(mActivity);
+ when(networkRequestDialogFragment.getActivity()).thenReturn(spyActivity);
+ networkRequestDialogFragment.show(spyActivity.getSupportFragmentManager(), "onUserSelectionConnectSuccess");
// Action
- WifiConfiguration config = new WifiConfiguration();
+ final WifiConfiguration config = new WifiConfiguration();
config.SSID = "Test AP 3";
- spyFakeFragment.onUserSelectionConnectSuccess(config);
+ networkRequestDialogFragment.onUserSelectionConnectSuccess(config);
// Check
- ShadowLooper.getShadowMainLooper().runToEndOfTasks();
- assertThat(fakeFragment.bCalledStopAndPop).isTrue();
- assertThat(fakeFragment.errorType).isNull();
+ verify(spyActivity).finish();
}
@Test
diff --git a/tests/unit/src/com/android/settings/password/ChooseLockPasswordTest.java b/tests/unit/src/com/android/settings/password/ChooseLockPasswordTest.java
index 57a4965..269be26 100644
--- a/tests/unit/src/com/android/settings/password/ChooseLockPasswordTest.java
+++ b/tests/unit/src/com/android/settings/password/ChooseLockPasswordTest.java
@@ -24,12 +24,16 @@
import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.hamcrest.CoreMatchers.not;
+import android.app.Activity;
import android.app.Instrumentation;
import android.content.Context;
import android.content.Intent;
import android.view.KeyEvent;
+import android.view.View;
import androidx.test.InstrumentationRegistry;
import androidx.test.espresso.action.ViewActions;
@@ -38,6 +42,9 @@
import com.android.settings.R;
+import com.google.android.setupcompat.PartnerCustomizationLayout;
+import com.google.android.setupcompat.template.ButtonFooterMixin;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -54,28 +61,41 @@
}
@Test
- public void clearNotVisible_when_activityLaunchedInitially() {
- mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class));
- onView(withId(R.id.clear_button)).check(matches(
- withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
+ public void clearIsNotShown_when_activityLaunchedInitially() {
+ final Activity activity =
+ mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
+ assertThat(
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView().getVisibility())
+ .isEqualTo(View.GONE);
}
@Test
- public void clearNotEnabled_when_nothingEntered() {
- mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class));
+ public void clearIsNotShown_when_nothingEntered() {
+ final Activity activity =
+ mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class));
+ final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
onView(withId(R.id.password_entry)).perform(ViewActions.typeText("1234"))
.perform(pressKey(KeyEvent.KEYCODE_ENTER));
- onView(withId(R.id.clear_button)).check(matches(isDisplayed()))
- .check(matches(not(isEnabled())));
+ assertThat(
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView().getVisibility())
+ .isEqualTo(View.GONE);
}
@Test
- public void clearEnabled_when_somethingEnteredToConfirm() {
- mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class));
+ public void clearIsShown_when_somethingEnteredToConfirm() {
+ final Activity activity =
+ mInstrumentation.startActivitySync(new Intent(mContext, ChooseLockPassword.class));
+ final PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
onView(withId(R.id.password_entry)).perform(ViewActions.typeText("1234"))
.perform(pressKey(KeyEvent.KEYCODE_ENTER))
.perform(ViewActions.typeText("1"));
// clear should be present if text field contains content
- onView(withId(R.id.clear_button)).check(matches(isDisplayed()));
+ assertThat(layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView().getText())
+ .isEqualTo(mContext.getString(R.string.lockpassword_clear_label));
+ assertThat(
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView().getVisibility())
+ .isEqualTo(View.VISIBLE);
}
}
diff --git a/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java b/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
index 1b12c54..67c5cce 100644
--- a/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
+++ b/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
@@ -30,8 +30,12 @@
import static org.hamcrest.CoreMatchers.not;
+import android.content.Context;
import android.view.KeyEvent;
+import android.view.View;
+import android.widget.Button;
+import androidx.test.InstrumentationRegistry;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.matcher.ViewMatchers;
import androidx.test.filters.MediumTest;
@@ -40,6 +44,10 @@
import com.android.settings.R;
+import com.google.android.setupcompat.PartnerCustomizationLayout;
+import com.google.android.setupcompat.template.ButtonFooterMixin;
+
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -48,6 +56,8 @@
@MediumTest
public class SetupChooseLockPasswordAppTest {
+ private Context mContext;
+
@Rule
public ActivityTestRule<SetupChooseLockPassword> mActivityTestRule =
new ActivityTestRule<>(
@@ -55,42 +65,56 @@
true /* enable touch at launch */,
false /* don't launch at every test */);
+ @Before
+ public void setUp() {
+ mContext = InstrumentationRegistry.getTargetContext();
+ }
+
@Test
public void testSkipDialogIsShown() throws Throwable {
SetupChooseLockPassword activity = mActivityTestRule.launchActivity(null);
+ PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
+ final Button skipOrClearButton =
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView();
- onView(withId(R.id.cancel_button))
- .check(matches(withText(R.string.skip_label)))
- .check(matches(isDisplayed()))
- .perform(click());
- onView(withId(android.R.id.button1)).check(matches(isDisplayed())).perform(click());
-
+ assertThat(skipOrClearButton.getText()).isEqualTo(mContext.getString(R.string.skip_label));
+ assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
+ skipOrClearButton.performClick();
assertThat(activity.isFinishing()).named("Is finishing").isTrue();
}
@Test
- public void clearNotVisible_when_activityLaunchedInitially() {
- mActivityTestRule.launchActivity(null);
- onView(withId(R.id.clear_button)).check(matches(
- withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
+ public void clearIsNotShown_when_activityLaunchedInitially() {
+ SetupChooseLockPassword activity = mActivityTestRule.launchActivity(null);
+ PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
+ assertThat(layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView().getText())
+ .isEqualTo(mContext.getString(R.string.lockpassword_clear_label));
}
@Test
- public void clearNotEnabled_when_nothingEntered() throws Throwable {
- mActivityTestRule.launchActivity(null);
+ public void clearIsNotShown_when_nothingEntered() throws Throwable {
+ SetupChooseLockPassword activity = mActivityTestRule.launchActivity(null);
+ PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
onView(withId(R.id.password_entry)).perform(ViewActions.typeText("1234"))
.perform(pressKey(KeyEvent.KEYCODE_ENTER));
- onView(withId(R.id.clear_button)).check(matches(isDisplayed()))
- .check(matches(not(isEnabled())));
+ assertThat(
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView().getVisibility())
+ .isEqualTo(View.GONE);
}
@Test
- public void clearEnabled_when_somethingEnteredToConfirm() {
+ public void clearIsShown_when_somethingEnteredToConfirm() {
+ SetupChooseLockPassword activity = mActivityTestRule.launchActivity(null);
+ PartnerCustomizationLayout layout = activity.findViewById(R.id.setup_wizard_layout);
+ onView(withId(R.id.password_entry)).perform(ViewActions.typeText("1234"))
+ .perform(pressKey(KeyEvent.KEYCODE_ENTER));
mActivityTestRule.launchActivity(null);
onView(withId(R.id.password_entry)).perform(ViewActions.typeText("1234"))
.perform(pressKey(KeyEvent.KEYCODE_ENTER))
.perform(ViewActions.typeText("1"));
// clear should be present if text field contains content
- onView(withId(R.id.clear_button)).check(matches(isDisplayed()));
+ assertThat(
+ layout.getMixin(ButtonFooterMixin.class).getSecondaryButtonView().getVisibility())
+ .isEqualTo(View.VISIBLE);
}
}