From 3ff3b81827ff647706d6ac8c925a33fedccebd93 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Fri, 31 Mar 2017 12:54:11 -0700 Subject: [PATCH] Update USb preference controller to use the new summary texts. - since the choose usb mode dialog and the preference summary use separate strings now, the two classes can have their own handling for getting the title/summary text and hence revert the earlier change that move the setTitle() and setSummary() from the activity to controller - only show summary for the option for "supply power", and don't set summary for all other options - update the controller to use the new summary text. - update test correspondingly. Change-Id: Ie56eb33ba24262e6f3a2259e4ee5ad6f3bfb8061 Fix: 36234108 Test: make RunSettingsRoboTests --- .../UsbModePreferenceController.java | 32 ++----- .../deviceinfo/UsbModeChooserActivity.java | 29 +++++- .../UsbModePreferenceControllerTest.java | 52 +++------- .../UsbModeChooserActivityTest.java | 94 +++++++++++++++++++ 4 files changed, 140 insertions(+), 67 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/deviceinfo/UsbModeChooserActivityTest.java diff --git a/src/com/android/settings/connecteddevice/UsbModePreferenceController.java b/src/com/android/settings/connecteddevice/UsbModePreferenceController.java index 6c1a28be5df..a98f06893db 100644 --- a/src/com/android/settings/connecteddevice/UsbModePreferenceController.java +++ b/src/com/android/settings/connecteddevice/UsbModePreferenceController.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.hardware.usb.UsbManager; +import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; @@ -77,34 +78,19 @@ public class UsbModePreferenceController extends PreferenceController mUsbReceiver.register(); } - public static int getSummary(int mode) { + @VisibleForTesting + int getSummary(int mode) { switch (mode) { case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE: - return R.string.usb_use_charging_only_desc; + return R.string.usb_summary_charging_only; case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE: - return R.string.usb_use_power_only_desc; + return R.string.usb_summary_power_only; case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP: - return R.string.usb_use_file_transfers_desc; + return R.string.usb_summary_file_transfers; case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP: - return R.string.usb_use_photo_transfers_desc; + return R.string.usb_summary_photo_transfers; case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI: - return R.string.usb_use_MIDI_desc; - } - return 0; - } - - public static int getTitle(int mode) { - switch (mode) { - case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE: - return R.string.usb_use_charging_only; - case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE: - return R.string.usb_use_power_only; - case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP: - return R.string.usb_use_file_transfers; - case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP: - return R.string.usb_use_photo_transfers; - case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI: - return R.string.usb_use_MIDI; + return R.string.usb_summary_MIDI; } return 0; } @@ -117,7 +103,7 @@ public class UsbModePreferenceController extends PreferenceController if (preference != null) { if (mUsbReceiver.isConnected()) { preference.setEnabled(true); - preference.setSummary(getTitle(mode)); + preference.setSummary(getSummary(mode)); } else { preference.setSummary(R.string.disconnected); preference.setEnabled(false); diff --git a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java index 5ac16d40f76..8ba378156fb 100644 --- a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java +++ b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java @@ -31,6 +31,7 @@ import android.hardware.usb.UsbManager; import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; +import android.support.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -40,7 +41,6 @@ import android.widget.TextView; import com.android.settings.R; import com.android.settingslib.RestrictedLockUtils; -import com.android.settings.connecteddevice.UsbModePreferenceController; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; @@ -136,9 +136,9 @@ public class UsbModeChooserActivity extends Activity { View v = mLayoutInflater.inflate(R.layout.restricted_radio_with_summary, container, false); TextView titleView = (TextView) v.findViewById(android.R.id.title); - titleView.setText(UsbModePreferenceController.getTitle(mode)); + titleView.setText(getTitle(mode)); TextView summaryView = (TextView) v.findViewById(android.R.id.summary); - summaryView.setText(UsbModePreferenceController.getSummary(mode)); + updateSummary(summaryView, mode); if (disallowedByAdmin) { if (mEnforcedAdmin != null) { @@ -178,4 +178,27 @@ public class UsbModeChooserActivity extends Activity { } } + @VisibleForTesting + static void updateSummary(TextView summaryView, int mode) { + if (mode == (UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE)) { + summaryView.setText(R.string.usb_use_power_only_desc); + } + } + + @VisibleForTesting + static int getTitle(int mode) { + switch (mode) { + case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_NONE: + return R.string.usb_use_charging_only; + case UsbBackend.MODE_POWER_SOURCE | UsbBackend.MODE_DATA_NONE: + return R.string.usb_use_power_only; + case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MTP: + return R.string.usb_use_file_transfers; + case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_PTP: + return R.string.usb_use_photo_transfers; + case UsbBackend.MODE_POWER_SINK | UsbBackend.MODE_DATA_MIDI: + return R.string.usb_use_MIDI; + } + return 0; + } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java index 8b6e900dfa3..4b84b0f4c7a 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/UsbModePreferenceControllerTest.java @@ -48,62 +48,32 @@ public class UsbModePreferenceControllerTest { @Test public void testGetSummary_chargeDevice() { - assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[0])) - .isEqualTo(R.string.usb_use_charging_only_desc); + assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[0])) + .isEqualTo(R.string.usb_summary_charging_only); } @Test public void testGetSummary_supplyPower() { - assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[1])) - .isEqualTo(R.string.usb_use_power_only_desc); + assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[1])) + .isEqualTo(R.string.usb_summary_power_only); } @Test public void testGetSummary_TransferFiles() { - assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[2])) - .isEqualTo(R.string.usb_use_file_transfers_desc); + assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[2])) + .isEqualTo(R.string.usb_summary_file_transfers); } @Test public void testGetSummary_TransferPhoto() { - assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[3])) - .isEqualTo(R.string.usb_use_photo_transfers_desc); + assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[3])) + .isEqualTo(R.string.usb_summary_photo_transfers); } @Test public void testGetSummary_MIDI() { - assertThat(UsbModePreferenceController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[4])) - .isEqualTo(R.string.usb_use_MIDI_desc); - } - - @Test - public void testGetTitle_chargeDevice() { - assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[0])) - .isEqualTo(R.string.usb_use_charging_only); - } - - @Test - public void testGetTitle_supplyPower() { - assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[1])) - .isEqualTo(R.string.usb_use_power_only); - } - - @Test - public void testGetTitle_TransferFiles() { - assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[2])) - .isEqualTo(R.string.usb_use_file_transfers); - } - - @Test - public void testGetTitle_TransferPhoto() { - assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[3])) - .isEqualTo(R.string.usb_use_photo_transfers); - } - - @Test - public void testGetTitle_MIDI() { - assertThat(UsbModePreferenceController.getTitle(UsbModeChooserActivity.DEFAULT_MODES[4])) - .isEqualTo(R.string.usb_use_MIDI); + assertThat(mController.getSummary(UsbModeChooserActivity.DEFAULT_MODES[4])) + .isEqualTo(R.string.usb_summary_MIDI); } @Test @@ -131,7 +101,7 @@ public class UsbModePreferenceControllerTest { mContext.sendStickyBroadcast(intent); assertThat(preference.getSummary()).isEqualTo( - mContext.getString(R.string.usb_use_charging_only)); + mContext.getString(R.string.usb_summary_charging_only)); } } \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/deviceinfo/UsbModeChooserActivityTest.java b/tests/robotests/src/com/android/settings/deviceinfo/UsbModeChooserActivityTest.java new file mode 100644 index 00000000000..d9c474de99d --- /dev/null +++ b/tests/robotests/src/com/android/settings/deviceinfo/UsbModeChooserActivityTest.java @@ -0,0 +1,94 @@ +/* + * 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. + */ +package com.android.settings.deviceinfo; + +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +import android.widget.TextView; +import com.android.settings.R; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class UsbModeChooserActivityTest { + + @Mock + private TextView mTextView; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void updateSummary_chargeDevice_shouldNotSetSummary() { + UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[0]); + verify(mTextView, never()).setText(anyInt()); + } + + @Test + public void updateSummary_supplyPower_shouldSetSummary() { + UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[1]); + verify(mTextView).setText(R.string.usb_use_power_only_desc); + } + + @Test + public void updateSummary_transferFiles_shouldNotSetSummary() { + UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[2]); + verify(mTextView, never()).setText(anyInt()); + } + + @Test + public void updateSummary_transferPhoto_shouldNotSetSummary() { + UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[3]); + verify(mTextView, never()).setText(anyInt()); + } + + @Test + public void updateSummary_MIDI_shouldNotSetSummary() { + UsbModeChooserActivity.updateSummary(mTextView, UsbModeChooserActivity.DEFAULT_MODES[4]); + verify(mTextView, never()).setText(anyInt()); + } + + @Test + public void getTitle_shouldReturnCorrectTitle() { + assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[0])) + .isEqualTo(R.string.usb_use_charging_only); + + assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[1])) + .isEqualTo(R.string.usb_use_power_only); + + assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[2])) + .isEqualTo(R.string.usb_use_file_transfers); + + assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[3])) + .isEqualTo(R.string.usb_use_photo_transfers); + + assertThat(UsbModeChooserActivity.getTitle(UsbModeChooserActivity.DEFAULT_MODES[4])) + .isEqualTo(R.string.usb_use_MIDI); + } + +} \ No newline at end of file