Merge "Convert data usage warning/limit to a edit text + dropdown" into nyc-dev
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 8ae5888..943a4e6 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -766,22 +766,24 @@
                 Log.e(TAG, "No WebView providers available");
                 return;
             }
-            String[] options = new String[providers.length];
-            String[] values = new String[providers.length];
+            ArrayList<String> options = new ArrayList<String>();
+            ArrayList<String> values = new ArrayList<String>();
             for(int n = 0; n < providers.length; n++) {
-                options[n] = providers[n].description;
-                values[n] = providers[n].packageName;
+                if (isPackageEnabled(providers[n].packageName)) {
+                    options.add(providers[n].description);
+                    values.add(providers[n].packageName);
+                }
             }
-            mWebViewProvider.setEntries(options);
-            mWebViewProvider.setEntryValues(values);
+            mWebViewProvider.setEntries(options.toArray(new String[options.size()]));
+            mWebViewProvider.setEntryValues(values.toArray(new String[values.size()]));
 
             String value = mWebViewUpdateService.getCurrentWebViewPackageName();
             if (value == null) {
                 value = "";
             }
 
-            for (int i = 0; i < values.length; i++) {
-                if (value.contentEquals(values[i])) {
+            for (int i = 0; i < values.size(); i++) {
+                if (value.contentEquals(values.get(i))) {
                     mWebViewProvider.setValueIndex(i);
                     return;
                 }
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index b6ac0c0..b875823 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -460,18 +460,22 @@
     @Override
     public SharedPreferences getSharedPreferences(String name, int mode) {
         if (name.equals(getPackageName() + "_preferences")) {
-            String tag = getClass().getName();
-            if (getIntent() != null && getIntent().hasExtra(EXTRA_SHOW_FRAGMENT)) {
-                tag = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
-            }
-            if (tag.startsWith("com.android.settings.")) {
-                tag = tag.replace("com.android.settings.", "");
-            }
-            return new SharedPreferencesLogger(this, tag);
+            return new SharedPreferencesLogger(this, getMetricsTag());
         }
         return super.getSharedPreferences(name, mode);
     }
 
+    private String getMetricsTag() {
+        String tag = getClass().getName();
+        if (getIntent() != null && getIntent().hasExtra(EXTRA_SHOW_FRAGMENT)) {
+            tag = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
+        }
+        if (tag.startsWith("com.android.settings.")) {
+            tag = tag.replace("com.android.settings.", "");
+        }
+        return tag;
+    }
+
     private static boolean isShortCutIntent(final Intent intent) {
         Set<String> categories = intent.getCategories();
         return (categories != null) && categories.contains("com.android.settings.SHORTCUT");
@@ -610,6 +614,9 @@
             mActionBar.setHomeButtonEnabled(mDisplayHomeAsUpEnabled);
         }
         mSwitchBar = (SwitchBar) findViewById(R.id.switch_bar);
+        if (mSwitchBar != null) {
+            mSwitchBar.setMetricsTag(getMetricsTag());
+        }
 
         // see if we should show Back/Next buttons
         if (intent.getBooleanExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false)) {
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index 019103f..adf1ce0 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -34,6 +34,7 @@
 import android.widget.Switch;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.settings.R;
 import com.android.settingslib.RestrictedLockUtils;
 
@@ -64,6 +65,8 @@
     private boolean mDisabledByAdmin = false;
     private EnforcedAdmin mEnforcedAdmin = null;
 
+    private String mMetricsTag;
+
     private ArrayList<OnSwitchChangeListener> mSwitchChangeListeners =
             new ArrayList<OnSwitchChangeListener>();
 
@@ -125,6 +128,10 @@
         setVisibility(View.GONE);
     }
 
+    public void setMetricsTag(String tag) {
+        mMetricsTag = tag;
+    }
+
     public void setTextViewLabel(boolean isChecked) {
         mLabel = getResources()
                 .getString(isChecked ? R.string.switch_on_text : R.string.switch_off_text);
@@ -217,9 +224,11 @@
     @Override
     public void onClick(View v) {
         if (mDisabledByAdmin) {
+            MetricsLogger.histogram(mContext, mMetricsTag + "/switch_bar|restricted", 1);
             RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin);
         } else {
             final boolean isChecked = !mSwitch.isChecked();
+            MetricsLogger.histogram(mContext, mMetricsTag + "/switch_bar|" + isChecked, 1);
             setChecked(isChecked);
         }
     }