Merge "Implement summary provider for Security."
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 49eb1b0..27ff937 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -865,20 +865,16 @@
     }
 
     private void updateWebViewMultiprocessOptions() {
-        updateSwitchPreference(mWebViewMultiprocess,
-                Settings.Global.getInt(getActivity().getContentResolver(),
-                        Settings.Global.WEBVIEW_MULTIPROCESS, 0) != 0);
+        try {
+            updateSwitchPreference(mWebViewMultiprocess,
+                                   mWebViewUpdateService.isMultiProcessEnabled());
+        } catch (RemoteException e) {
+        }
     }
 
     private void writeWebViewMultiprocessOptions() {
-        boolean value = mWebViewMultiprocess.isChecked();
-        Settings.Global.putInt(getActivity().getContentResolver(),
-                Settings.Global.WEBVIEW_MULTIPROCESS, value ? 1 : 0);
-
         try {
-            String wv_package = mWebViewUpdateService.getCurrentWebViewPackageName();
-            ActivityManager.getService().killPackageDependents(
-                    wv_package, UserHandle.USER_ALL);
+            mWebViewUpdateService.enableMultiProcess(mWebViewMultiprocess.isChecked());
         } catch (RemoteException e) {
         }
     }
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 8b97f04..b2ed592 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
@@ -42,6 +43,7 @@
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.conditional.Condition;
 import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.SuggestionParser;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
@@ -130,9 +132,11 @@
     public void setCategoriesAndSuggestions(List<DashboardCategory> categories,
             List<Tile> suggestions) {
         // TODO: Better place for tinting?
-        TypedValue tintColor = new TypedValue();
-        mContext.getTheme().resolveAttribute(com.android.internal.R.attr.colorAccent,
-                tintColor, true);
+        final TypedArray a = mContext.obtainStyledAttributes(new int[] {
+            FeatureFactory.getFactory(mContext).getDashboardFeatureProvider(mContext).isEnabled()
+                ? android.R.attr.colorControlNormal : android.R.attr.colorAccent });
+        int tintColor = a.getColor(0, mContext.getColor(android.R.color.white));
+        a.recycle();
         for (int i = 0; i < categories.size(); i++) {
             for (int j = 0; j < categories.get(i).tiles.size(); j++) {
                 final Tile tile = categories.get(i).tiles.get(j);
@@ -141,7 +145,7 @@
                         tile.intent.getComponent().getPackageName())) {
                     // If this drawable is coming from outside Settings, tint it to match the
                     // color.
-                    tile.icon.setTint(tintColor.data);
+                    tile.icon.setTint(tintColor);
                 }
             }
         }
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 14d1bdd..056efc7 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -17,6 +17,7 @@
 
 import android.app.Activity;
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.support.annotation.VisibleForTesting;
 import android.support.v7.preference.Preference;
@@ -298,8 +299,15 @@
         if (mSummaryLoader != null) {
             mSummaryLoader.release();
         }
-        mSummaryLoader = new SummaryLoader(getActivity(), getCategoryKey());
+        final Activity activity = getActivity();
+        mSummaryLoader = new SummaryLoader(activity, getCategoryKey());
         mSummaryLoader.setSummaryConsumer(this);
+        final TypedArray a = activity.obtainStyledAttributes(new int[] {
+            mDashboardFeatureProvider.isEnabled() ? android.R.attr.colorControlNormal
+                : android.R.attr.colorAccent});
+        final int tintColor = a.getColor(0, activity.getColor(android.R.color.white));
+        a.recycle();
+        final String pkgName = activity.getPackageName();
         // Install dashboard tiles.
         for (Tile tile : tiles) {
             final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
@@ -310,16 +318,20 @@
             if (!displayTile(tile)) {
                 continue;
             }
+            if (!pkgName.equals(tile.intent.getComponent().getPackageName())) {
+                // If this drawable is coming from outside Settings, tint it to match the color.
+                tile.icon.setTint(tintColor);
+            }
             if (mDashboardTilePrefKeys.contains(key)) {
                 // Have the key already, will rebind.
                 final Preference preference = mProgressiveDisclosureMixin.findPreference(
                         screen, key);
-                mDashboardFeatureProvider.bindPreferenceToTile(getActivity(), preference, tile, key,
+                mDashboardFeatureProvider.bindPreferenceToTile(activity, preference, tile, key,
                         mPlaceholderPreferenceController.getOrder());
             } else {
                 // Don't have this key, add it.
                 final Preference pref = new Preference(getPrefContext());
-                mDashboardFeatureProvider.bindPreferenceToTile(getActivity(), pref, tile, key,
+                mDashboardFeatureProvider.bindPreferenceToTile(activity, pref, tile, key,
                         mPlaceholderPreferenceController.getOrder());
                 mProgressiveDisclosureMixin.addPreference(screen, pref);
                 mDashboardTilePrefKeys.add(key);
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index dce8a25..7e98918 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -54,6 +54,7 @@
         implements StorageMeasurement.MeasurementReceiver, LifecycleObserver, OnDestroy {
     private static final String TAG = "StorageItemPreference";
 
+    private static final String IMAGE_MIME_TYPE = "image/*";
     @VisibleForTesting
     static final String PHOTO_KEY = "pref_photos_videos";
     @VisibleForTesting
@@ -233,9 +234,10 @@
     }
 
     private Intent getPhotosIntent() {
-        Intent intent = new Intent(DocumentsContract.ACTION_BROWSE);
-        intent.setData(DocumentsContract.buildRootUri(AUTHORITY_MEDIA, "images_root"));
-        intent.addCategory(Intent.CATEGORY_DEFAULT);
+        Intent intent = new Intent();
+        intent.setAction(android.content.Intent.ACTION_VIEW);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+        intent.setType(IMAGE_MIME_TYPE);
         return intent;
     }
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
index b0c0b44..7776633 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
@@ -106,10 +106,8 @@
                 any(UserHandle.class));
 
         Intent intent = argumentCaptor.getValue();
-        assertThat(intent.getAction()).isEqualTo(DocumentsContract.ACTION_BROWSE);
-        assertThat(intent.getData()).isEqualTo(DocumentsContract.buildRootUri(
-                "com.android.providers.media.documents",
-                "images_root"));
+        assertThat(intent.getType()).isEqualTo("image/*");
+        assertThat(intent.getAction()).isEqualTo(android.content.Intent.ACTION_VIEW);
     }
 
     @Test