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);