Merge "Add support for user profiles to the Storage Settings."
diff --git a/res/layout-land/choose_lock_pattern.xml b/res/layout-land/choose_lock_pattern.xml
index b4d5fce..0743577 100644
--- a/res/layout-land/choose_lock_pattern.xml
+++ b/res/layout-land/choose_lock_pattern.xml
@@ -39,6 +39,8 @@
android:layout_weight="1.0"
android:layout_marginStart="?attr/suwMarginSides"
android:layout_marginBottom="@dimen/suw_content_frame_padding_bottom"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<ImageView
@@ -86,7 +88,9 @@
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dip"
- android:layout_weight="1.0">
+ android:layout_weight="1.0"
+ android:clipChildren="false"
+ android:clipToPadding="false">
<!-- confirm / restart buttons -->
<LinearLayout android:id="@+id/buttonContainer"
@@ -94,6 +98,8 @@
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="horizontal">
<!-- left / top button: skip, or re-try -->
diff --git a/res/layout-land/fingerprint_enroll_enrolling.xml b/res/layout-land/fingerprint_enroll_enrolling.xml
index 27af681..c89bc42 100644
--- a/res/layout-land/fingerprint_enroll_enrolling.xml
+++ b/res/layout-land/fingerprint_enroll_enrolling.xml
@@ -40,6 +40,8 @@
android:layout_height="match_parent"
android:layout_marginStart="?attr/suwMarginSides"
android:layout_marginBottom="@dimen/suw_content_frame_padding_bottom"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<ImageView
diff --git a/res/layout-land/fingerprint_enroll_find_sensor.xml b/res/layout-land/fingerprint_enroll_find_sensor.xml
index b64b27f..3dadece 100644
--- a/res/layout-land/fingerprint_enroll_find_sensor.xml
+++ b/res/layout-land/fingerprint_enroll_find_sensor.xml
@@ -36,12 +36,16 @@
android:layout_height="match_parent"
android:layout_marginStart="?attr/suwMarginSides"
android:layout_marginBottom="@dimen/suw_content_frame_padding_bottom"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:clipChildren="false"
+ android:clipToPadding="false">
<ImageView
android:id="@+id/suw_layout_icon"
diff --git a/res/layout-land/fingerprint_enroll_finish.xml b/res/layout-land/fingerprint_enroll_finish.xml
index 664123d..5fc0d73 100644
--- a/res/layout-land/fingerprint_enroll_finish.xml
+++ b/res/layout-land/fingerprint_enroll_finish.xml
@@ -36,6 +36,8 @@
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<TextView
@@ -59,6 +61,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="horizontal">
<Button
diff --git a/res/layout/choose_lock_password.xml b/res/layout/choose_lock_password.xml
index 4b9f3e5..15fb7db 100644
--- a/res/layout/choose_lock_password.xml
+++ b/res/layout/choose_lock_password.xml
@@ -26,6 +26,8 @@
style="@style/SuwContentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:gravity="center_horizontal"
android:orientation="vertical">
@@ -54,6 +56,8 @@
android:id="@+id/bottom_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
diff --git a/res/layout/choose_lock_pattern_common.xml b/res/layout/choose_lock_pattern_common.xml
index c50aa5b..050479b 100644
--- a/res/layout/choose_lock_pattern_common.xml
+++ b/res/layout/choose_lock_pattern_common.xml
@@ -29,6 +29,8 @@
style="@style/SuwContentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<!-- takes up all space above button bar at bottom -->
@@ -37,6 +39,8 @@
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<TextView android:id="@+id/headerText"
@@ -56,6 +60,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="horizontal">
<!-- left : cancel, or re-try -->
diff --git a/res/layout/fingerprint_enroll_finish_base.xml b/res/layout/fingerprint_enroll_finish_base.xml
index bcbbadf..99c96ad 100644
--- a/res/layout/fingerprint_enroll_finish_base.xml
+++ b/res/layout/fingerprint_enroll_finish_base.xml
@@ -75,6 +75,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="horizontal">
<Button
diff --git a/res/layout/fingerprint_enroll_introduction.xml b/res/layout/fingerprint_enroll_introduction.xml
index ccd1f62..6d20756 100644
--- a/res/layout/fingerprint_enroll_introduction.xml
+++ b/res/layout/fingerprint_enroll_introduction.xml
@@ -26,6 +26,8 @@
style="@style/SuwContentFrame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<com.android.setupwizardlib.view.RichTextView
@@ -44,6 +46,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="horizontal">
<Button
diff --git a/res/layout/redaction_interstitial.xml b/res/layout/redaction_interstitial.xml
index d1ce0dc..e48f20f 100644
--- a/res/layout/redaction_interstitial.xml
+++ b/res/layout/redaction_interstitial.xml
@@ -28,6 +28,8 @@
style="@style/SuwContentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:clipChildren="false"
+ android:clipToPadding="false"
android:orientation="vertical">
<TextView
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6885dcb..dfcbc96 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6229,13 +6229,13 @@
<string name="work_sound_same_as_personal">Same as personal profile</string>
<!-- Work Sound: Title for dialog shown when enabling sync with personal sounds. [CHAR LIMIT=60] -->
- <string name="work_sync_dialog_title">Replace work profile sounds?</string>
+ <string name="work_sync_dialog_title">Use personal profile sounds?</string>
- <!-- Work Sound: Confirm action text for dialog shown when enabling sync with personal sounds. [CHAR LIMIT=30] -->
+ <!-- Work Sound: Confirm action text for dialog shown when overriding work notification sounds with personal sounds. [CHAR LIMIT=30] -->
<string name="work_sync_dialog_yes">Replace</string>
- <!-- Work Sound: Message for dialog shown when enabling sync with personal sounds. [CHAR LIMIT=none] -->
- <string name="work_sync_dialog_message">Your current work profile sounds will be replaced with your personal profile sounds</string>
+ <!-- Work Sound: Message for dialog shown when using the same sounds for work events as for personal events (notifications / ringtones / alarms). [CHAR LIMIT=none] -->
+ <string name="work_sync_dialog_message">Your personal profile sounds will be used instead of your current work profile sounds</string>
<!-- Ringtones preference category: Title for the Ringotnes preference categories. [CHAR LIMIT=none] -->
<string name="ringtones_category_preference_title">Ringtones</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3f36255..790b726 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -259,13 +259,13 @@
<item name="android:singleLine">true</item>
</style>
- <style name="SetupWizardButton.Negative" parent="@android:style/Widget.Material.Button.Borderless.Colored">
- <item name="android:minWidth">0dp</item>
- <item name="android:textAllCaps">false</item>
- <item name="android:theme">@style/AccentColorHighlightBorderlessButton</item>
+ <style name="SetupWizardButton.Negative" parent="@style/SuwGlifButton.Secondary">
+ <!-- Negative margin to offset for padding of the button itself. We want the label to be
+ aligned with the text above it -->
+ <item name="android:layout_marginStart">-16dp</item>
</style>
- <style name="SetupWizardButton.Positive" parent="@android:style/Widget.Material.Button.Colored" />
+ <style name="SetupWizardButton.Positive" parent="@style/SuwGlifButton.Primary" />
<style name="AccentColorHighlightBorderlessButton">
<item name="android:colorControlHighlight">?android:attr/colorAccent</item>
diff --git a/src/com/android/settings/SmsDefaultDialog.java b/src/com/android/settings/SmsDefaultDialog.java
index 830187c..e4b49ee 100644
--- a/src/com/android/settings/SmsDefaultDialog.java
+++ b/src/com/android/settings/SmsDefaultDialog.java
@@ -125,6 +125,10 @@
p.mOnClickListener = this;
p.mNegativeButtonText = getString(R.string.cancel);
p.mNegativeButtonListener = this;
+ if (p.mAdapter.isEmpty()) {
+ // If there is nothing to choose from, don't build the dialog.
+ return false;
+ }
}
setupAlert();
diff --git a/src/com/android/settings/TetherService.java b/src/com/android/settings/TetherService.java
index 6d359f2..610d320 100644
--- a/src/com/android/settings/TetherService.java
+++ b/src/com/android/settings/TetherService.java
@@ -252,7 +252,8 @@
Intent intent = new Intent(provisionAction);
int type = mCurrentTethers.get(index);
intent.putExtra(TETHER_CHOICE, type);
- intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND
+ | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
return intent;
}
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 878a044..db72fce 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -71,7 +71,6 @@
import com.android.settings.applications.AppStateUsageBridge.UsageState;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.dashboard.SummaryLoader;
-import com.android.settings.deviceinfo.storage.StorageStatsSource;
import com.android.settings.fuelgauge.HighPowerDetail;
import com.android.settings.fuelgauge.PowerWhitelistBackend;
import com.android.settings.notification.AppNotificationSettings;
@@ -85,6 +84,7 @@
import com.android.settingslib.applications.ApplicationsState.AppFilter;
import com.android.settingslib.applications.ApplicationsState.CompoundFilter;
import com.android.settingslib.applications.ApplicationsState.VolumeFilter;
+import com.android.settingslib.applications.StorageStatsSource;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/src/com/android/settings/applications/MusicViewHolderController.java b/src/com/android/settings/applications/MusicViewHolderController.java
index fd7e320..d7c142f 100644
--- a/src/com/android/settings/applications/MusicViewHolderController.java
+++ b/src/com/android/settings/applications/MusicViewHolderController.java
@@ -26,7 +26,7 @@
import com.android.settings.R;
import com.android.settings.Utils;
-import com.android.settings.deviceinfo.storage.StorageStatsSource;
+import com.android.settingslib.applications.StorageStatsSource;
/**
* MusicViewHolderController controls an Audio/Music file view in the ManageApplications view.
diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
index 7077912..9a5c224 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
@@ -39,7 +39,8 @@
@Override
public boolean isAvailable() {
- return true;
+ final List<ResolveInfo> candidates = getCandidates();
+ return candidates != null && !candidates.isEmpty();
}
@Override
@@ -61,16 +62,6 @@
}
}
- private String getOnlyAppLabel() {
- // Resolve that intent and check that the handleAllWebDataURI boolean is set
- final List<ResolveInfo> list = mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE,
- PackageManager.MATCH_ALL, mUserId);
- if (list != null && list.size() == 1) {
- return list.get(0).loadLabel(mPackageManager.getPackageManager()).toString();
- }
- return null;
- }
-
@Override
protected DefaultAppInfo getDefaultAppInfo() {
try {
@@ -81,6 +72,20 @@
}
}
+ private List<ResolveInfo> getCandidates() {
+ return mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL,
+ mUserId);
+ }
+
+ private String getOnlyAppLabel() {
+ // Resolve that intent and check that the handleAllWebDataURI boolean is set
+ final List<ResolveInfo> list = getCandidates();
+ if (list != null && list.size() == 1) {
+ return list.get(0).loadLabel(mPackageManager.getPackageManager()).toString();
+ }
+ return null;
+ }
+
/**
* Whether or not the pkg contains browser capability
*/
diff --git a/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
index fa0d28f..8a73468 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
@@ -42,7 +42,11 @@
final boolean hasUserRestriction =
um.hasUserRestriction(UserManager.DISALLOW_OUTGOING_CALLS);
- return !hasUserRestriction;
+ if (hasUserRestriction) {
+ return false;
+ }
+ final List<String> candidates = getCandidates();
+ return candidates != null && !candidates.isEmpty();
}
@Override
@@ -60,6 +64,10 @@
}
}
+ private List<String> getCandidates() {
+ return DefaultDialerManager.getInstalledDialerApplications(mContext, mUserId);
+ }
+
public static boolean hasPhonePreference(String pkg, Context context) {
List<String> dialerPackages =
DefaultDialerManager.getInstalledDialerApplications(context, UserHandle.myUserId());
diff --git a/src/com/android/settings/applications/defaultapps/DefaultWorkBrowserPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultWorkBrowserPreferenceController.java
index 0cee3c5..0792ff9 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultWorkBrowserPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultWorkBrowserPreferenceController.java
@@ -23,21 +23,26 @@
public class DefaultWorkBrowserPreferenceController extends DefaultBrowserPreferenceController {
+ private final UserHandle mUserHandle;
+
public DefaultWorkBrowserPreferenceController(Context context) {
super(context);
- final UserHandle managedProfile = Utils.getManagedProfile(mUserManager);
- if (managedProfile != null) {
- mUserId = managedProfile.getIdentifier();
+ mUserHandle = Utils.getManagedProfile(mUserManager);
+ if (mUserHandle != null) {
+ mUserId = mUserHandle.getIdentifier();
}
}
@Override
- public boolean isAvailable() {
- return Utils.getManagedProfile(mUserManager) != null;
- }
-
- @Override
public String getPreferenceKey() {
return "work_default_browser";
}
+
+ @Override
+ public boolean isAvailable() {
+ if (mUserHandle == null) {
+ return false;
+ }
+ return super.isAvailable();
+ }
}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultWorkPhonePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultWorkPhonePreferenceController.java
index f793fa3..c6d04fa 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultWorkPhonePreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultWorkPhonePreferenceController.java
@@ -17,11 +17,28 @@
package com.android.settings.applications.defaultapps;
import android.content.Context;
+import android.os.UserHandle;
+
+import com.android.settings.Utils;
public class DefaultWorkPhonePreferenceController extends DefaultPhonePreferenceController {
+ private final UserHandle mUserHandle;
+
public DefaultWorkPhonePreferenceController(Context context) {
super(context);
+ mUserHandle = Utils.getManagedProfile(mUserManager);
+ if (mUserHandle != null) {
+ mUserId = mUserHandle.getIdentifier();
+ }
+ }
+
+ @Override
+ public boolean isAvailable() {
+ if (mUserHandle == null) {
+ return false;
+ }
+ return super.isAvailable();
}
@Override
diff --git a/src/com/android/settings/deviceinfo/storage/StorageStatsSource.java b/src/com/android/settings/deviceinfo/storage/StorageStatsSource.java
deleted file mode 100644
index 98038fd..0000000
--- a/src/com/android/settings/deviceinfo/storage/StorageStatsSource.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.storage;
-
-import android.app.usage.StorageStats;
-import android.app.usage.StorageStatsManager;
-import android.content.Context;
-import android.os.UserHandle;
-
-/**
- * StorageStatsSource wraps the StorageStatsManager for testability purposes.
- */
-public class StorageStatsSource {
- private StorageStatsManager mStorageStatsManager;
-
- public StorageStatsSource(Context context) {
- mStorageStatsManager = context.getSystemService(StorageStatsManager.class);
- }
-
- public ExternalStorageStats getExternalStorageStats(String volumeUuid, UserHandle user) {
- return new ExternalStorageStats(
- mStorageStatsManager.queryExternalStatsForUser(volumeUuid, user));
- }
-
- public AppStorageStats getStatsForUid(String volumeUuid, int uid) {
- return new AppStorageStatsImpl(mStorageStatsManager.queryStatsForUid(volumeUuid, uid));
- }
-
- public static class ExternalStorageStats {
- public long totalBytes;
- public long audioBytes;
- public long videoBytes;
- public long imageBytes;
-
- public ExternalStorageStats(long totalBytes, long audioBytes, long videoBytes,
- long imageBytes) {
- this.totalBytes = totalBytes;
- this.audioBytes = audioBytes;
- this.videoBytes = videoBytes;
- this.imageBytes = imageBytes;
- }
-
- public ExternalStorageStats(android.app.usage.ExternalStorageStats stats) {
- totalBytes = stats.getTotalBytes();
- audioBytes = stats.getAudioBytes();
- videoBytes = stats.getVideoBytes();
- imageBytes = stats.getImageBytes();
- }
- }
-
- public interface AppStorageStats {
- long getCodeBytes();
- long getDataBytes();
- long getCacheBytes();
- }
-
- public static class AppStorageStatsImpl implements AppStorageStats {
- private StorageStats mStats;
-
- public AppStorageStatsImpl(StorageStats stats) {
- mStats = stats;
- }
-
- public long getCodeBytes() {
- return mStats.getCodeBytes();
- }
-
- public long getDataBytes() {
- return mStats.getDataBytes();
- }
-
- public long getCacheBytes() {
- return mStats.getCacheBytes();
- }
- }
-}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageBase.java b/src/com/android/settings/fuelgauge/PowerUsageBase.java
index 3d27d22..0236a30 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageBase.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageBase.java
@@ -101,27 +101,6 @@
}
}
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- MenuItem refresh = menu.add(0, MENU_STATS_REFRESH, 0, R.string.menu_stats_refresh)
- .setIcon(com.android.internal.R.drawable.ic_menu_refresh)
- .setAlphabeticShortcut('r');
- refresh.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |
- MenuItem.SHOW_AS_ACTION_WITH_TEXT);
- }
-
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case MENU_STATS_REFRESH:
- mStatsHelper.clearStats();
- refreshStats();
- mHandler.removeMessages(MSG_REFRESH_STATS);
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
protected void refreshStats() {
mStatsHelper.refreshStats(BatteryStats.STATS_SINCE_CHARGED, mUm.getUserProfiles());
}
diff --git a/tests/robotests/src/com/android/settings/applications/MusicViewHolderControllerTest.java b/tests/robotests/src/com/android/settings/applications/MusicViewHolderControllerTest.java
index 4af0707..592293d 100644
--- a/tests/robotests/src/com/android/settings/applications/MusicViewHolderControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/MusicViewHolderControllerTest.java
@@ -32,8 +32,8 @@
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
-import com.android.settings.deviceinfo.storage.StorageStatsSource;
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
+import com.android.settingslib.applications.StorageStatsSource;
import org.junit.Before;
import org.junit.Test;
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
index 10cfba0..644a942 100644
--- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
@@ -36,7 +36,9 @@
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
@@ -68,7 +70,18 @@
}
@Test
- public void isAlwaysAvailable() {
+ public void isAvailable_noBrowser_shouldReturnFalse() {
+ when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
+ .thenReturn(null);
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_hasBrowser_shouldReturnTrue() {
+ final List<ResolveInfo> candidates = new ArrayList<>();
+ candidates.add(new ResolveInfo());
+ when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
+ .thenReturn(candidates);
assertThat(mController.isAvailable()).isTrue();
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 72f6a87..dab39e4 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -88,8 +88,6 @@
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Menu mMenu;
@Mock
- private MenuItem mRefreshMenu;
- @Mock
private MenuItem mAdditionalBatteryInfoMenu;
@Mock
private MenuItem mToggleAppsMenu;
@@ -142,11 +140,6 @@
mFragment = new TestFragment(mContext);
- when(mMenu.add(Menu.NONE, MENU_STATS_REFRESH, Menu.NONE,
- R.string.menu_stats_refresh)
- .setIcon(com.android.internal.R.drawable.ic_menu_refresh)
- .setAlphabeticShortcut('r'))
- .thenReturn(mRefreshMenu);
when(mAdditionalBatteryInfoMenu.getItemId())
.thenReturn(MENU_ADDITIONAL_BATTERY_INFO);
when(mToggleAppsMenu.getItemId()).thenReturn(MENU_TOGGLE_APPS);
diff --git a/tests/unit/src/com/android/settings/TetherServiceTest.java b/tests/unit/src/com/android/settings/TetherServiceTest.java
index bec3e7e..899ea7a 100644
--- a/tests/unit/src/com/android/settings/TetherServiceTest.java
+++ b/tests/unit/src/com/android/settings/TetherServiceTest.java
@@ -415,6 +415,7 @@
private void sendResponse(int response, Context context) {
Intent responseIntent = new Intent(TEST_RESPONSE_ACTION);
+ responseIntent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
responseIntent.putExtra(TetherService.EXTRA_RESULT, response);
context.sendBroadcast(
responseIntent, android.Manifest.permission.CONNECTIVITY_INTERNAL);