Merge "Add SlowNestedRecyclerViewActivity"
diff --git a/Android.mk b/Android.mk
index e352bc7..1f3210f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -288,7 +288,6 @@
 	core/java/android/view/accessibility/IAccessibilityManagerClient.aidl \
 	core/java/android/view/IApplicationToken.aidl \
 	core/java/android/view/IAppTransitionAnimationSpecsFuture.aidl \
-	core/java/android/view/IAssetAtlas.aidl \
 	core/java/android/view/IDockedStackListener.aidl \
 	core/java/android/view/IGraphicsStats.aidl \
 	core/java/android/view/IInputFilter.aidl \
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..f5bd945
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,7 @@
+[Hook Scripts]
+checkstyle_hook = ../../development/tools/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
+                  -fw core/java/android/animation/
+                      core/java/android/text/
+                      core/java/android/view/
+                      core/java/android/transition/
+                      core/java/android/widget/
diff --git a/apct-tests/perftests/utils/src/android/perftests/utils/PerfStatusReporter.java b/apct-tests/perftests/utils/src/android/perftests/utils/PerfStatusReporter.java
index 3933b57..64b0bf5 100644
--- a/apct-tests/perftests/utils/src/android/perftests/utils/PerfStatusReporter.java
+++ b/apct-tests/perftests/utils/src/android/perftests/utils/PerfStatusReporter.java
@@ -18,8 +18,9 @@
 
 import android.support.test.InstrumentationRegistry;
 
-import org.junit.rules.TestWatcher;
+import org.junit.rules.TestRule;
 import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
 
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
@@ -47,7 +48,7 @@
  * name when using parameterization.
  */
 
-public class PerfStatusReporter extends TestWatcher {
+public class PerfStatusReporter implements TestRule {
     private final BenchmarkState mState = new BenchmarkState();
 
     public BenchmarkState getBenchmarkState() {
@@ -55,33 +56,39 @@
     }
 
     @Override
-    protected void succeeded(Description description) {
-        String invokeMethodName = description.getMethodName();
-        // validate and simplify the function name.
-        // First, remove the "test" prefix which normally comes from CTS test.
-        // Then make sure the [subTestName] is valid, not just numbers like [0].
-        if (invokeMethodName.startsWith("test")) {
-            assertTrue("The test name " + invokeMethodName + " is too short",
-                    invokeMethodName.length() > 5);
-            invokeMethodName = invokeMethodName.substring(4, 5).toLowerCase()
-                    + invokeMethodName.substring(5);
-        }
-
-        int index = invokeMethodName.lastIndexOf('[');
-        if (index > 0) {
-            boolean allDigits = true;
-            for (int i = index + 1; i < invokeMethodName.length() - 1; i++) {
-                if (!Character.isDigit(invokeMethodName.charAt(i))) {
-                    allDigits = false;
-                    break;
+    public Statement apply(Statement base, Description description) {
+        return new Statement() {
+            @Override
+            public void evaluate() throws Throwable {
+                String invokeMethodName = description.getMethodName();
+                // validate and simplify the function name.
+                // First, remove the "test" prefix which normally comes from CTS test.
+                // Then make sure the [subTestName] is valid, not just numbers like [0].
+                if (invokeMethodName.startsWith("test")) {
+                    assertTrue("The test name " + invokeMethodName + " is too short",
+                            invokeMethodName.length() > 5);
+                    invokeMethodName = invokeMethodName.substring(4, 5).toLowerCase()
+                            + invokeMethodName.substring(5);
                 }
+
+                int index = invokeMethodName.lastIndexOf('[');
+                if (index > 0) {
+                    boolean allDigits = true;
+                    for (int i = index + 1; i < invokeMethodName.length() - 1; i++) {
+                        if (!Character.isDigit(invokeMethodName.charAt(i))) {
+                            allDigits = false;
+                            break;
+                        }
+                    }
+                    assertFalse("The name in [] can't contain only digits for " + invokeMethodName,
+                            allDigits);
+                }
+
+                base.evaluate();
+
+                mState.sendFullStatusReport(InstrumentationRegistry.getInstrumentation(),
+                        invokeMethodName);
             }
-            assertFalse("The name in [] can't contain only digits for " + invokeMethodName,
-                    allDigits);
-        }
-
-        mState.sendFullStatusReport(InstrumentationRegistry.getInstrumentation(),
-                invokeMethodName);
+        };
     }
-
 }
diff --git a/api/current.txt b/api/current.txt
index 491883b..9f5a8e2 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -855,6 +855,7 @@
     field public static final int mediaRouteTypes = 16843694; // 0x10103ae
     field public static final int menuCategory = 16843230; // 0x10101de
     field public static final int mimeType = 16842790; // 0x1010026
+    field public static final int min = 16843367; // 0x1010267
     field public static final int minDate = 16843583; // 0x101033f
     field public static final int minEms = 16843098; // 0x101015a
     field public static final int minHeight = 16843072; // 0x1010140
@@ -32576,7 +32577,7 @@
     field public static final java.lang.String RADIO_CELL = "cell";
     field public static final java.lang.String RADIO_NFC = "nfc";
     field public static final java.lang.String RADIO_WIFI = "wifi";
-    field public static final java.lang.String SHOW_PROCESSES = "show_processes";
+    field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
     field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
@@ -36898,6 +36899,7 @@
     field public static final java.lang.String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
     field public static final java.lang.String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
+    field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
     field public static final java.lang.String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
@@ -47474,6 +47476,7 @@
     method public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
     method public android.view.animation.Interpolator getInterpolator();
     method public synchronized int getMax();
+    method public synchronized int getMin();
     method public synchronized int getProgress();
     method public android.content.res.ColorStateList getProgressBackgroundTintList();
     method public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
@@ -47496,6 +47499,7 @@
     method public void setInterpolator(android.content.Context, int);
     method public void setInterpolator(android.view.animation.Interpolator);
     method public synchronized void setMax(int);
+    method public synchronized void setMin(int);
     method public synchronized void setProgress(int);
     method public void setProgress(int, boolean);
     method public void setProgressBackgroundTintList(android.content.res.ColorStateList);
diff --git a/api/system-current.txt b/api/system-current.txt
index 519bfb8..4d7c4af 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -962,6 +962,7 @@
     field public static final int mediaRouteTypes = 16843694; // 0x10103ae
     field public static final int menuCategory = 16843230; // 0x10101de
     field public static final int mimeType = 16842790; // 0x1010026
+    field public static final int min = 16843367; // 0x1010267
     field public static final int minDate = 16843583; // 0x101033f
     field public static final int minEms = 16843098; // 0x101015a
     field public static final int minHeight = 16843072; // 0x1010140
@@ -35333,7 +35334,7 @@
     field public static final java.lang.String RADIO_CELL = "cell";
     field public static final java.lang.String RADIO_NFC = "nfc";
     field public static final java.lang.String RADIO_WIFI = "wifi";
-    field public static final java.lang.String SHOW_PROCESSES = "show_processes";
+    field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
     field public static final java.lang.String THEATER_MODE_ON = "theater_mode_on";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
@@ -39989,6 +39990,7 @@
     field public static final java.lang.String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
     field public static final java.lang.String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
+    field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
     field public static final java.lang.String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
@@ -51013,6 +51015,7 @@
     method public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
     method public android.view.animation.Interpolator getInterpolator();
     method public synchronized int getMax();
+    method public synchronized int getMin();
     method public synchronized int getProgress();
     method public android.content.res.ColorStateList getProgressBackgroundTintList();
     method public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
@@ -51035,6 +51038,7 @@
     method public void setInterpolator(android.content.Context, int);
     method public void setInterpolator(android.view.animation.Interpolator);
     method public synchronized void setMax(int);
+    method public synchronized void setMin(int);
     method public synchronized void setProgress(int);
     method public void setProgress(int, boolean);
     method public void setProgressBackgroundTintList(android.content.res.ColorStateList);
diff --git a/api/test-current.txt b/api/test-current.txt
index 841fe43..4be2e7f 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -855,6 +855,7 @@
     field public static final int mediaRouteTypes = 16843694; // 0x10103ae
     field public static final int menuCategory = 16843230; // 0x10101de
     field public static final int mimeType = 16842790; // 0x1010026
+    field public static final int min = 16843367; // 0x1010267
     field public static final int minDate = 16843583; // 0x101033f
     field public static final int minEms = 16843098; // 0x101015a
     field public static final int minHeight = 16843072; // 0x1010140
@@ -32654,7 +32655,7 @@
     field public static final java.lang.String RADIO_CELL = "cell";
     field public static final java.lang.String RADIO_NFC = "nfc";
     field public static final java.lang.String RADIO_WIFI = "wifi";
-    field public static final java.lang.String SHOW_PROCESSES = "show_processes";
+    field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";
     field public static final java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled";
@@ -36979,6 +36980,7 @@
     field public static final java.lang.String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool";
     field public static final java.lang.String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
+    field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool";
     field public static final java.lang.String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool";
     field public static final java.lang.String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool";
@@ -47567,6 +47569,7 @@
     method public android.graphics.PorterDuff.Mode getIndeterminateTintMode();
     method public android.view.animation.Interpolator getInterpolator();
     method public synchronized int getMax();
+    method public synchronized int getMin();
     method public synchronized int getProgress();
     method public android.content.res.ColorStateList getProgressBackgroundTintList();
     method public android.graphics.PorterDuff.Mode getProgressBackgroundTintMode();
@@ -47589,6 +47592,7 @@
     method public void setInterpolator(android.content.Context, int);
     method public void setInterpolator(android.view.animation.Interpolator);
     method public synchronized void setMax(int);
+    method public synchronized void setMin(int);
     method public synchronized void setProgress(int);
     method public void setProgress(int, boolean);
     method public void setProgressBackgroundTintList(android.content.res.ColorStateList);
diff --git a/cmds/idmap/scan.cpp b/cmds/idmap/scan.cpp
index 6d30f0d..ab6adfb 100644
--- a/cmds/idmap/scan.cpp
+++ b/cmds/idmap/scan.cpp
@@ -1,5 +1,6 @@
 #include <dirent.h>
 #include <inttypes.h>
+#include <sys/file.h>
 #include <sys/stat.h>
 
 #include "idmap.h"
@@ -35,16 +36,31 @@
 
     bool writePackagesList(const char *filename, const SortedVector<Overlay>& overlayVector)
     {
-        FILE* fout = fopen(filename, "w");
+        // the file is opened for appending so that it doesn't get truncated
+        // before we can guarantee mutual exclusion via the flock
+        FILE* fout = fopen(filename, "a");
         if (fout == NULL) {
             return false;
         }
 
+        if (TEMP_FAILURE_RETRY(flock(fileno(fout), LOCK_EX)) != 0) {
+            fclose(fout);
+            return false;
+        }
+
+        if (TEMP_FAILURE_RETRY(ftruncate(fileno(fout), 0)) != 0) {
+            TEMP_FAILURE_RETRY(flock(fileno(fout), LOCK_UN));
+            fclose(fout);
+            return false;
+        }
+
         for (size_t i = 0; i < overlayVector.size(); ++i) {
             const Overlay& overlay = overlayVector[i];
             fprintf(fout, "%s %s\n", overlay.apk_path.string(), overlay.idmap_path.string());
         }
 
+        TEMP_FAILURE_RETRY(fflush(fout));
+        TEMP_FAILURE_RETRY(flock(fileno(fout), LOCK_UN));
         fclose(fout);
 
         // Make file world readable since Zygote (running as root) will read
@@ -171,9 +187,6 @@
 {
     String8 filename = String8(idmap_dir);
     filename.appendPath("overlays.list");
-    if (unlink(filename.string()) != 0 && errno != ENOENT) {
-        return EXIT_FAILURE;
-    }
 
     SortedVector<Overlay> overlayVector;
     const size_t N = overlay_dirs->size();
diff --git a/compiled-classes-phone b/compiled-classes-phone
index 221d687..6214306 100644
--- a/compiled-classes-phone
+++ b/compiled-classes-phone
@@ -1168,14 +1168,6 @@
 android.drm.DrmManagerClient$OnInfoListener
 android.drm.DrmOutputStream
 android.drm.DrmSupportInfo
-android.graphics.Atlas
-android.graphics.Atlas$Entry
-android.graphics.Atlas$Policy
-android.graphics.Atlas$SlicePolicy
-android.graphics.Atlas$SlicePolicy$Cell
-android.graphics.Atlas$SlicePolicy$MinAreaSplitDecision
-android.graphics.Atlas$SlicePolicy$SplitDecision
-android.graphics.Atlas$Type
 android.graphics.Bitmap
 android.graphics.Bitmap$1
 android.graphics.Bitmap$CompressFormat
@@ -4264,9 +4256,6 @@
 android.view.IAppTransitionAnimationSpecsFuture$Stub$Proxy
 android.view.IApplicationToken
 android.view.IApplicationToken$Stub
-android.view.IAssetAtlas
-android.view.IAssetAtlas$Stub
-android.view.IAssetAtlas$Stub$Proxy
 android.view.IDockedStackListener
 android.view.IDockedStackListener$Stub
 android.view.IDockedStackListener$Stub$Proxy
diff --git a/core/java/android/animation/KeyframeSet.java b/core/java/android/animation/KeyframeSet.java
index fd0bf0b..116d063 100644
--- a/core/java/android/animation/KeyframeSet.java
+++ b/core/java/android/animation/KeyframeSet.java
@@ -16,15 +16,15 @@
 
 package android.animation;
 
-import java.util.Arrays;
-import java.util.List;
-
-import android.animation.Keyframe.IntKeyframe;
 import android.animation.Keyframe.FloatKeyframe;
+import android.animation.Keyframe.IntKeyframe;
 import android.animation.Keyframe.ObjectKeyframe;
 import android.graphics.Path;
 import android.util.Log;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * This class holds a collection of Keyframe objects and is called by ValueAnimator to calculate
  * values between those keyframes for a given animation. The class internal to the animation
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 7be77c5..bdb2685 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -1053,6 +1053,7 @@
             this(Icon.createWithResource("", icon), title, intent, new Bundle(), null, false);
         }
 
+        /** Keep in sync with {@link Notification.Action.Builder#Builder(Action)}! */
         private Action(Icon icon, CharSequence title, PendingIntent intent, Bundle extras,
                 RemoteInput[] remoteInputs, boolean allowGeneratedReplies) {
             this.mIcon = icon;
@@ -1119,7 +1120,7 @@
              */
             @Deprecated
             public Builder(int icon, CharSequence title, PendingIntent intent) {
-                this(Icon.createWithResource("", icon), title, intent, new Bundle(), null);
+                this(Icon.createWithResource("", icon), title, intent);
             }
 
             /**
@@ -1129,7 +1130,7 @@
              * @param intent the {@link PendingIntent} to fire when users trigger this action
              */
             public Builder(Icon icon, CharSequence title, PendingIntent intent) {
-                this(icon, title, intent, new Bundle(), null);
+                this(icon, title, intent, new Bundle(), null, false);
             }
 
             /**
@@ -1138,12 +1139,13 @@
              * @param action the action to read fields from.
              */
             public Builder(Action action) {
-                this(action.getIcon(), action.title, action.actionIntent, new Bundle(action.mExtras),
-                        action.getRemoteInputs());
+                this(action.getIcon(), action.title, action.actionIntent,
+                        new Bundle(action.mExtras), action.getRemoteInputs(),
+                        action.getAllowGeneratedReplies());
             }
 
             private Builder(Icon icon, CharSequence title, PendingIntent intent, Bundle extras,
-                    RemoteInput[] remoteInputs) {
+                    RemoteInput[] remoteInputs, boolean allowGeneratedReplies) {
                 mIcon = icon;
                 mTitle = title;
                 mIntent = intent;
@@ -1152,6 +1154,7 @@
                     mRemoteInputs = new ArrayList<RemoteInput>(remoteInputs.length);
                     Collections.addAll(mRemoteInputs, remoteInputs);
                 }
+                mAllowGeneratedReplies = allowGeneratedReplies;
             }
 
             /**
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index a207a52..4ddcfe5 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -2352,18 +2352,23 @@
      * <p>The calling device admin must be a device or profile owner. If it is not,
      * a {@link SecurityException} will be thrown.
      *
+     * <p>The calling device admin can verify the value it has set by calling
+     * {@link #getRequiredStrongAuthTimeout(ComponentName)} and passing in its instance.
+     *
      * <p>This method can be called on the {@link DevicePolicyManager} instance returned by
      * {@link #getParentProfileInstance(ComponentName)} in order to set restrictions on the parent
      * profile.
      *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
      * @param timeoutMs The new timeout, after which the user will have to unlock with strong
-     *         authentication method. If the timeout is lower than 1 hour (minimum) or higher than
-     *         72 hours (default and maximum) an {@link IllegalArgumentException} is thrown.
+     *         authentication method. A value of 0 means the admin is not participating in
+     *         controlling the timeout.
+     *         The minimum and maximum timeouts are platform-defined and are typically 1 hour and
+     *         72 hours, respectively. Though discouraged, the admin may choose to require strong
+     *         auth at all times using {@link #KEYGUARD_DISABLE_FINGERPRINT} and/or
+     *         {@link #KEYGUARD_DISABLE_TRUST_AGENTS}.
      *
      * @throws SecurityException if {@code admin} is not a device or profile owner.
-     * @throws IllegalArgumentException if the timeout is lower than 1 hour (minimum) or higher than
-     *         72 hours (default and maximum)
      *
      * @hide
      */
@@ -2389,7 +2394,7 @@
      *
      * @param admin The name of the admin component to check, or {@code null} to aggregate
      *         accross all participating admins.
-     * @return The timeout or default timeout if not configured
+     * @return The timeout or 0 if not configured for the provided admin.
      *
      * @hide
      */
diff --git a/core/java/android/content/pm/ShortcutManager.java b/core/java/android/content/pm/ShortcutManager.java
index cd248ea..96ad67c 100644
--- a/core/java/android/content/pm/ShortcutManager.java
+++ b/core/java/android/content/pm/ShortcutManager.java
@@ -329,7 +329,7 @@
  * <p>Applications with a foreground activity or service are not rate-limited.
  *
  * <p>Rate-limiting will be reset upon certain events, so that even background applications
- * can call these APIs again until they are rate limit is reached again.
+ * can call these APIs again until the rate limit is reached again.
  * These events include the following:
  * <ul>
  *   <li>When an application comes to the foreground.
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 95dd148..3d5d900 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -5433,7 +5433,8 @@
         if (!filtering || (flags&DUMP_CHARGED_ONLY) != 0) {
             if (dumpDurationSteps(pw, "  ", "Discharge step durations:",
                     getDischargeLevelStepTracker(), false)) {
-                long timeRemaining = computeBatteryTimeRemaining(SystemClock.elapsedRealtime());
+                long timeRemaining = computeBatteryTimeRemaining(
+                    SystemClock.elapsedRealtime() * 1000);
                 if (timeRemaining >= 0) {
                     pw.print("  Estimated discharge time remaining: ");
                     TimeUtils.formatDuration(timeRemaining / 1000, pw);
@@ -5449,7 +5450,8 @@
             }
             if (dumpDurationSteps(pw, "  ", "Charge step durations:",
                     getChargeLevelStepTracker(), false)) {
-                long timeRemaining = computeChargeTimeRemaining(SystemClock.elapsedRealtime());
+                long timeRemaining = computeChargeTimeRemaining(
+                    SystemClock.elapsedRealtime() * 1000);
                 if (timeRemaining >= 0) {
                     pw.print("  Estimated charge time remaining: ");
                     TimeUtils.formatDuration(timeRemaining / 1000, pw);
@@ -5612,14 +5614,14 @@
         if (!filtering || (flags&DUMP_CHARGED_ONLY) != 0) {
             dumpDurationSteps(pw, "", DISCHARGE_STEP_DATA, getDischargeLevelStepTracker(), true);
             String[] lineArgs = new String[1];
-            long timeRemaining = computeBatteryTimeRemaining(SystemClock.elapsedRealtime());
+            long timeRemaining = computeBatteryTimeRemaining(SystemClock.elapsedRealtime() * 1000);
             if (timeRemaining >= 0) {
                 lineArgs[0] = Long.toString(timeRemaining);
                 dumpLine(pw, 0 /* uid */, "i" /* category */, DISCHARGE_TIME_REMAIN_DATA,
                         (Object[])lineArgs);
             }
             dumpDurationSteps(pw, "", CHARGE_STEP_DATA, getChargeLevelStepTracker(), true);
-            timeRemaining = computeChargeTimeRemaining(SystemClock.elapsedRealtime());
+            timeRemaining = computeChargeTimeRemaining(SystemClock.elapsedRealtime() * 1000);
             if (timeRemaining >= 0) {
                 lineArgs[0] = Long.toString(timeRemaining);
                 dumpLine(pw, 0 /* uid */, "i" /* category */, CHARGE_TIME_REMAIN_DATA,
diff --git a/core/java/android/os/PowerManagerInternal.java b/core/java/android/os/PowerManagerInternal.java
index 9bbe8f9..c153184 100644
--- a/core/java/android/os/PowerManagerInternal.java
+++ b/core/java/android/os/PowerManagerInternal.java
@@ -53,24 +53,6 @@
      */
     public static final int WAKEFULNESS_DOZING = 3;
 
-
-    /**
-     * Power hint:
-     * Interaction: The user is interacting with the device. The corresponding data field must be
-     * the expected duration of the interaction, or 0 if unknown.
-     *
-     * Sustained Performance Mode: The corresponding data field must be Enable/Disable
-     * Sustained Performance Mode.
-     *
-     * Launch: This is specific for activity launching. The corresponding data field must be
-     * the expected duration of the required boost, or 0 if unknown.
-     *
-     * These must be kept in sync with the values in hardware/libhardware/include/hardware/power.h
-     */
-    public static final int POWER_HINT_INTERACTION = 2;
-    public static final int POWER_HINT_SUSTAINED_PERFORMANCE_MODE = 6;
-    public static final int POWER_HINT_LAUNCH = 8;
-
     public static String wakefulnessToString(int wakefulness) {
         switch (wakefulness) {
             case WAKEFULNESS_ASLEEP:
@@ -169,5 +151,9 @@
 
     public abstract void uidGone(int uid);
 
+    /**
+     * The hintId sent through this method should be in-line with the
+     * PowerHint defined in android/hardware/power/<version 1.0 & up>/IPower.h
+     */
     public abstract void powerHint(int hintId, int data);
 }
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index bf73089..d7d8d50 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1853,7 +1853,6 @@
             MOVED_TO_GLOBAL.add(Settings.Global.CALL_AUTO_RETRY);
             MOVED_TO_GLOBAL.add(Settings.Global.DEBUG_APP);
             MOVED_TO_GLOBAL.add(Settings.Global.WAIT_FOR_DEBUGGER);
-            MOVED_TO_GLOBAL.add(Settings.Global.SHOW_PROCESSES);
             MOVED_TO_GLOBAL.add(Settings.Global.ALWAYS_FINISH_ACTIVITIES);
             MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_CONTENT_URL);
             MOVED_TO_GLOBAL.add(Settings.Global.TZINFO_UPDATE_METADATA_URL);
@@ -2791,7 +2790,8 @@
         /**
          * Control whether the process CPU usage meter should be shown.
          *
-         * @deprecated Use {@link Global#SHOW_PROCESSES} instead
+         * @deprecated This functionality is no longer available as of
+         * {@link android.os.Build.VERSION_CODES#N_MR1}.
          */
         @Deprecated
         public static final String SHOW_PROCESSES = Global.SHOW_PROCESSES;
@@ -8513,7 +8513,11 @@
 
         /**
          * Control whether the process CPU usage meter should be shown.
+         *
+         * @deprecated This functionality is no longer available as of
+         * {@link android.os.Build.VERSION_CODES#N_MR1}.
          */
+        @Deprecated
         public static final String SHOW_PROCESSES = "show_processes";
 
         /**
diff --git a/core/java/android/text/AutoText.java b/core/java/android/text/AutoText.java
index 04730ec..c5339a4 100644
--- a/core/java/android/text/AutoText.java
+++ b/core/java/android/text/AutoText.java
@@ -18,11 +18,10 @@
 
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
+import android.view.View;
 
 import com.android.internal.util.XmlUtils;
 
-import android.view.View;
-
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -97,10 +96,10 @@
                 sInstance = instance;
             }
         }
-        
+
         return instance;
     }
-    
+
     /**
      * Retrieves a possible spelling correction for the specified range
      * of text.  Returns null if no correction can be found.
@@ -119,7 +118,7 @@
      */
     public static int getSize(View view) {
 
-        return getInstance(view).getSize(); 
+        return getInstance(view).getSize();
     }
 
     /**
@@ -137,7 +136,7 @@
 
             for (; here != TRIE_NULL; here = mTrie[here + TRIE_NEXT]) {
                 if (c == mTrie[here + TRIE_C]) {
-                    if ((i == end - 1) 
+                    if ((i == end - 1)
                             && (mTrie[here + TRIE_OFF] != TRIE_NULL)) {
                         int off = mTrie[here + TRIE_OFF];
                         int len = mText.charAt(off);
@@ -174,7 +173,7 @@
             while (true) {
                 XmlUtils.nextElement(parser);
 
-                String element = parser.getName(); 
+                String element = parser.getName();
                 if (element == null || !(element.equals("word"))) {
                     break;
                 }
@@ -214,7 +213,7 @@
         int herep = TRIE_ROOT;
         // Keep track of the size of the dictionary
         mSize++;
-        
+
         for (int i = 0; i < slen; i++) {
             char c = src.charAt(i);
             boolean found = false;
diff --git a/core/java/android/text/BidiFormatter.java b/core/java/android/text/BidiFormatter.java
index 59273f4..d84502f 100644
--- a/core/java/android/text/BidiFormatter.java
+++ b/core/java/android/text/BidiFormatter.java
@@ -16,11 +16,11 @@
 
 package android.text;
 
+import static android.text.TextDirectionHeuristics.FIRSTSTRONG_LTR;
+
 import android.annotation.Nullable;
 import android.view.View;
 
-import static android.text.TextDirectionHeuristics.FIRSTSTRONG_LTR;
-
 import java.util.Locale;
 
 /**
diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java
index 409994d..de8aa5a 100644
--- a/core/java/android/text/Html.java
+++ b/core/java/android/text/Html.java
@@ -16,19 +16,8 @@
 
 package android.text;
 
-import com.android.internal.util.ArrayUtils;
-import org.ccil.cowan.tagsoup.HTMLSchema;
-import org.ccil.cowan.tagsoup.Parser;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
 import android.app.ActivityThread;
 import android.app.Application;
-import android.content.res.ColorStateList;
 import android.content.res.Resources;
 import android.graphics.Color;
 import android.graphics.Typeface;
@@ -47,11 +36,21 @@
 import android.text.style.StyleSpan;
 import android.text.style.SubscriptSpan;
 import android.text.style.SuperscriptSpan;
-import android.text.style.TextAppearanceSpan;
 import android.text.style.TypefaceSpan;
 import android.text.style.URLSpan;
 import android.text.style.UnderlineSpan;
 
+import com.android.internal.util.ArrayUtils;
+
+import org.ccil.cowan.tagsoup.HTMLSchema;
+import org.ccil.cowan.tagsoup.Parser;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+
 import java.io.IOException;
 import java.io.StringReader;
 import java.util.HashMap;
diff --git a/core/java/android/text/InputType.java b/core/java/android/text/InputType.java
index c596388..8967b70 100644
--- a/core/java/android/text/InputType.java
+++ b/core/java/android/text/InputType.java
@@ -16,8 +16,6 @@
 
 package android.text;
 
-import android.text.TextUtils;
-
 /**
  * Bit definitions for an integer defining the basic content type of text
  * held in an {@link Editable} object. Supported classes may be combined
@@ -51,19 +49,19 @@
      * or flags.<p>
      */
     public static final int TYPE_MASK_CLASS = 0x0000000f;
-    
+
     /**
      * Mask of bits that determine the variation of
      * the base content class.
      */
     public static final int TYPE_MASK_VARIATION = 0x00000ff0;
-    
+
     /**
      * Mask of bits that provide addition bit flags
      * of options.
      */
     public static final int TYPE_MASK_FLAGS = 0x00fff000;
-    
+
     /**
      * Special content type for when no explicit type has been specified.
      * This should be interpreted to mean that the target input connection
@@ -75,11 +73,11 @@
      * flag is set.
      */
     public static final int TYPE_NULL = 0x00000000;
-    
+
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
-    
+
     /**
      * Class for normal text.  This class supports the following flags (only
      * one of which should be set):
@@ -92,7 +90,7 @@
      * variation, normal should be assumed.
      */
     public static final int TYPE_CLASS_TEXT = 0x00000001;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: capitalize all characters.  Overrides
      * {@link #TYPE_TEXT_FLAG_CAP_WORDS} and
@@ -101,7 +99,7 @@
      * this only affects languages where there are upper-case and lower-case letters.
      */
     public static final int TYPE_TEXT_FLAG_CAP_CHARACTERS = 0x00001000;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: capitalize the first character of
      * every word.  Overrides {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  This
@@ -110,7 +108,7 @@
      * this only affects languages where there are upper-case and lower-case letters.
      */
     public static final int TYPE_TEXT_FLAG_CAP_WORDS = 0x00002000;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: capitalize the first character of
      * each sentence.  This value is explicitly defined
@@ -121,7 +119,7 @@
      * this only affects languages where there are upper-case and lower-case letters.
      */
     public static final int TYPE_TEXT_FLAG_CAP_SENTENCES = 0x00004000;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: the user is entering free-form
      * text that should have auto-correction applied to it. Without this flag,
@@ -135,7 +133,7 @@
      * the IME offers an interface to show suggestions.
      */
     public static final int TYPE_TEXT_FLAG_AUTO_CORRECT = 0x00008000;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: the text editor (which means
      * the application) is performing auto-completion of the text being entered
@@ -154,23 +152,23 @@
      * it will rely on the Editor to pass completions/corrections.
      */
     public static final int TYPE_TEXT_FLAG_AUTO_COMPLETE = 0x00010000;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: multiple lines of text can be
-     * entered into the field.  If this flag is not set, the text field 
+     * entered into the field.  If this flag is not set, the text field
      * will be constrained to a single line. The IME may also choose not to
      * display an enter key when this flag is not set, as there should be no
      * need to create new lines.
      */
     public static final int TYPE_TEXT_FLAG_MULTI_LINE = 0x00020000;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: the regular text view associated
      * with this should not be multi-line, but when a fullscreen input method
      * is providing text it should use multiple lines if it can.
      */
     public static final int TYPE_TEXT_FLAG_IME_MULTI_LINE = 0x00040000;
-    
+
     /**
      * Flag for {@link #TYPE_CLASS_TEXT}: the input method does not need to
      * display any dictionary-based candidates. This is useful for text views that
@@ -191,36 +189,36 @@
     public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 0x00080000;
 
     // ----------------------------------------------------------------------
-    
+
     /**
      * Default variation of {@link #TYPE_CLASS_TEXT}: plain old normal text.
      */
     public static final int TYPE_TEXT_VARIATION_NORMAL = 0x00000000;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering a URI.
      */
     public static final int TYPE_TEXT_VARIATION_URI = 0x00000010;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering an e-mail address.
      */
     public static final int TYPE_TEXT_VARIATION_EMAIL_ADDRESS = 0x00000020;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering the subject line of
      * an e-mail.
      */
     public static final int TYPE_TEXT_VARIATION_EMAIL_SUBJECT = 0x00000030;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering a short, possibly informal
      * message such as an instant message or a text message.
      */
     public static final int TYPE_TEXT_VARIATION_SHORT_MESSAGE = 0x00000040;
-    
+
     /**
-     * Variation of {@link #TYPE_CLASS_TEXT}: entering the content of a long, possibly 
+     * Variation of {@link #TYPE_CLASS_TEXT}: entering the content of a long, possibly
      * formal message such as the body of an e-mail.
      */
     public static final int TYPE_TEXT_VARIATION_LONG_MESSAGE = 0x00000050;
@@ -229,34 +227,34 @@
      * Variation of {@link #TYPE_CLASS_TEXT}: entering the name of a person.
      */
     public static final int TYPE_TEXT_VARIATION_PERSON_NAME = 0x00000060;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering a postal mailing address.
      */
     public static final int TYPE_TEXT_VARIATION_POSTAL_ADDRESS = 0x00000070;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering a password.
      */
     public static final int TYPE_TEXT_VARIATION_PASSWORD = 0x00000080;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering a password, which should
      * be visible to the user.
      */
     public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 0x00000090;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering text inside of a web form.
      */
     public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 0x000000a0;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering text to filter contents
      * of a list etc.
      */
     public static final int TYPE_TEXT_VARIATION_FILTER = 0x000000b0;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering text for phonetic
      * pronunciation, such as a phonetic name field in contacts. This is mostly
@@ -264,7 +262,7 @@
      * readings, like Japanese.
      */
     public static final int TYPE_TEXT_VARIATION_PHONETIC = 0x000000c0;
-    
+
     /**
      * Variation of {@link #TYPE_CLASS_TEXT}: entering e-mail address inside
      * of a web form.  This was added in
@@ -290,7 +288,7 @@
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
-    
+
     /**
      * Class for numeric text.  This class supports the following flags:
      * {@link #TYPE_NUMBER_FLAG_SIGNED} and
@@ -301,19 +299,19 @@
      * the variation, normal should be assumed.</p>
      */
     public static final int TYPE_CLASS_NUMBER = 0x00000002;
-    
+
     /**
      * Flag of {@link #TYPE_CLASS_NUMBER}: the number is signed, allowing
      * a positive or negative sign at the start.
      */
     public static final int TYPE_NUMBER_FLAG_SIGNED = 0x00001000;
-    
+
     /**
      * Flag of {@link #TYPE_CLASS_NUMBER}: the number is decimal, allowing
      * a decimal point to provide fractional values.
      */
     public static final int TYPE_NUMBER_FLAG_DECIMAL = 0x00002000;
-    
+
     // ----------------------------------------------------------------------
 
     /**
@@ -340,17 +338,17 @@
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
-    
+
     /**
      * Class for a phone number.  This class currently supports no variations
      * or flags.
      */
     public static final int TYPE_CLASS_PHONE = 0x00000003;
-    
+
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
     // ----------------------------------------------------------------------
-    
+
     /**
      * Class for dates and times.  It supports the
      * following variations:
@@ -359,19 +357,19 @@
      * {@link #TYPE_DATETIME_VARIATION_TIME}.
      */
     public static final int TYPE_CLASS_DATETIME = 0x00000004;
-    
+
     /**
      * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
      * both a date and time.
      */
     public static final int TYPE_DATETIME_VARIATION_NORMAL = 0x00000000;
-    
+
     /**
      * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
      * only a date.
      */
     public static final int TYPE_DATETIME_VARIATION_DATE = 0x00000010;
-    
+
     /**
      * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
      * only a time.
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 2a52961..03a2d62 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -16,11 +16,9 @@
 
 package android.text;
 
-import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Paint.FontMetricsInt;
-import android.graphics.RectF;
 import android.text.Layout.Directions;
 import android.text.Layout.TabStops;
 import android.text.style.CharacterStyle;
diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java
index 23b22d1..6262fc2 100644
--- a/core/java/android/text/TextUtils.java
+++ b/core/java/android/text/TextUtils.java
@@ -60,8 +60,6 @@
 import com.android.internal.R;
 import com.android.internal.util.ArrayUtils;
 
-import libcore.icu.ICU;
-
 import java.lang.reflect.Array;
 import java.util.Iterator;
 import java.util.List;
diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java
index 3ed37b36..b5a8aca 100755
--- a/core/java/android/text/format/DateFormat.java
+++ b/core/java/android/text/format/DateFormat.java
@@ -23,15 +23,15 @@
 import android.text.Spanned;
 import android.text.SpannedString;
 
+import libcore.icu.ICU;
+import libcore.icu.LocaleData;
+
+import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.Locale;
 import java.util.TimeZone;
-import java.text.SimpleDateFormat;
-
-import libcore.icu.ICU;
-import libcore.icu.LocaleData;
 
 /**
  * Utility class for producing strings with formatted date/time.
diff --git a/core/java/android/text/format/DateUtils.java b/core/java/android/text/format/DateUtils.java
index cb8852c..f16e714 100644
--- a/core/java/android/text/format/DateUtils.java
+++ b/core/java/android/text/format/DateUtils.java
@@ -16,12 +16,16 @@
 
 package android.text.format;
 
-import com.android.internal.R;
-
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 
+import com.android.internal.R;
+
+import libcore.icu.DateIntervalFormat;
+import libcore.icu.LocaleData;
+import libcore.icu.RelativeDateTimeFormatter;
+
 import java.io.IOException;
 import java.util.Calendar;
 import java.util.Date;
@@ -30,10 +34,6 @@
 import java.util.Locale;
 import java.util.TimeZone;
 
-import libcore.icu.DateIntervalFormat;
-import libcore.icu.LocaleData;
-import libcore.icu.RelativeDateTimeFormatter;
-
 /**
  * This class contains various date-related utilities for creating text for things like
  * elapsed time and date ranges, strings for days of the week and months, and AM/PM text etc.
diff --git a/core/java/android/text/format/Formatter.java b/core/java/android/text/format/Formatter.java
index be52464..b67ac98 100644
--- a/core/java/android/text/format/Formatter.java
+++ b/core/java/android/text/format/Formatter.java
@@ -20,11 +20,10 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.Resources;
+import android.net.NetworkUtils;
 import android.text.BidiFormatter;
 import android.text.TextUtils;
 import android.view.View;
-import android.net.NetworkUtils;
-import android.net.TrafficStats;
 
 import java.util.Locale;
 
diff --git a/core/java/android/text/format/Time.java b/core/java/android/text/format/Time.java
index 69c2cff..bbd9c9c 100644
--- a/core/java/android/text/format/Time.java
+++ b/core/java/android/text/format/Time.java
@@ -18,13 +18,13 @@
 
 import android.util.TimeFormatException;
 
+import libcore.util.ZoneInfo;
+import libcore.util.ZoneInfoDB;
+
 import java.io.IOException;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import libcore.util.ZoneInfo;
-import libcore.util.ZoneInfoDB;
-
 /**
  * An alternative to the {@link java.util.Calendar} and
  * {@link java.util.GregorianCalendar} classes. An instance of the Time class represents
diff --git a/core/java/android/text/format/TimeFormatter.java b/core/java/android/text/format/TimeFormatter.java
index 3a63805..5a14092 100644
--- a/core/java/android/text/format/TimeFormatter.java
+++ b/core/java/android/text/format/TimeFormatter.java
@@ -22,12 +22,13 @@
 
 import android.content.res.Resources;
 
+import libcore.icu.LocaleData;
+import libcore.util.ZoneInfo;
+
 import java.nio.CharBuffer;
 import java.util.Formatter;
 import java.util.Locale;
 import java.util.TimeZone;
-import libcore.icu.LocaleData;
-import libcore.util.ZoneInfo;
 
 /**
  * Formatting logic for {@link Time}. Contains a port of Bionic's broken strftime_tz to Java.
diff --git a/core/java/android/text/method/BaseKeyListener.java b/core/java/android/text/method/BaseKeyListener.java
index 14e0b4f..90559dc 100644
--- a/core/java/android/text/method/BaseKeyListener.java
+++ b/core/java/android/text/method/BaseKeyListener.java
@@ -19,19 +19,22 @@
 import android.graphics.Paint;
 import android.icu.lang.UCharacter;
 import android.icu.lang.UProperty;
-import android.view.KeyEvent;
-import android.view.View;
-import android.text.*;
+import android.text.Editable;
+import android.text.Emoji;
+import android.text.InputType;
+import android.text.Layout;
+import android.text.NoCopySpan;
+import android.text.Selection;
+import android.text.Spanned;
 import android.text.method.TextKeyListener.Capitalize;
 import android.text.style.ReplacementSpan;
+import android.view.KeyEvent;
+import android.view.View;
 import android.widget.TextView;
 
 import com.android.internal.annotations.GuardedBy;
 
 import java.text.BreakIterator;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
 
 /**
  * Abstract base class for key listeners.
diff --git a/core/java/android/text/method/CharacterPickerDialog.java b/core/java/android/text/method/CharacterPickerDialog.java
index 880e46d..7d838e0 100644
--- a/core/java/android/text/method/CharacterPickerDialog.java
+++ b/core/java/android/text/method/CharacterPickerDialog.java
@@ -16,24 +16,25 @@
 
 package android.text.method;
 
-import com.android.internal.R;
-
 import android.app.Dialog;
 import android.content.Context;
 import android.os.Bundle;
-import android.text.*;
+import android.text.Editable;
+import android.text.Selection;
 import android.view.LayoutInflater;
-import android.view.View.OnClickListener;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
-import android.widget.AdapterView.OnItemClickListener;
 import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
 import android.widget.BaseAdapter;
 import android.widget.Button;
 import android.widget.GridView;
 
+import com.android.internal.R;
+
 /**
  * Dialog for choosing accented characters related to a base character.
  */
diff --git a/core/java/android/text/method/DateKeyListener.java b/core/java/android/text/method/DateKeyListener.java
index e6f63d1..88ef388 100644
--- a/core/java/android/text/method/DateKeyListener.java
+++ b/core/java/android/text/method/DateKeyListener.java
@@ -16,8 +16,8 @@
 
 package android.text.method;
 
-import android.view.KeyEvent;
 import android.text.InputType;
+import android.view.KeyEvent;
 
 /**
  * For entering dates in a text field.
@@ -32,7 +32,7 @@
         return InputType.TYPE_CLASS_DATETIME
                 | InputType.TYPE_DATETIME_VARIATION_DATE;
     }
-    
+
     @Override
     protected char[] getAcceptedChars()
     {
diff --git a/core/java/android/text/method/DialerKeyListener.java b/core/java/android/text/method/DialerKeyListener.java
index bb8b0de..17abed6 100644
--- a/core/java/android/text/method/DialerKeyListener.java
+++ b/core/java/android/text/method/DialerKeyListener.java
@@ -16,10 +16,10 @@
 
 package android.text.method;
 
-import android.view.KeyEvent;
-import android.view.KeyCharacterMap.KeyData;
 import android.text.InputType;
 import android.text.Spannable;
+import android.view.KeyCharacterMap.KeyData;
+import android.view.KeyEvent;
 
 /**
  * For dialing-only text entry
@@ -47,7 +47,7 @@
     public int getInputType() {
         return InputType.TYPE_CLASS_PHONE;
     }
-    
+
     /**
      * Overrides the superclass's lookup method to prefer the number field
      * from the KeyEvent.
diff --git a/core/java/android/text/method/DigitsKeyListener.java b/core/java/android/text/method/DigitsKeyListener.java
index c95df46..4aeb39a 100644
--- a/core/java/android/text/method/DigitsKeyListener.java
+++ b/core/java/android/text/method/DigitsKeyListener.java
@@ -17,8 +17,8 @@
 package android.text.method;
 
 import android.text.InputType;
-import android.text.Spanned;
 import android.text.SpannableStringBuilder;
+import android.text.Spanned;
 import android.view.KeyEvent;
 
 
@@ -133,7 +133,7 @@
         }
         return contentType;
     }
-    
+
     @Override
     public CharSequence filter(CharSequence source, int start, int end,
                                Spanned dest, int dstart, int dend) {
diff --git a/core/java/android/text/method/MetaKeyKeyListener.java b/core/java/android/text/method/MetaKeyKeyListener.java
index e9db5fd..c3c7302 100644
--- a/core/java/android/text/method/MetaKeyKeyListener.java
+++ b/core/java/android/text/method/MetaKeyKeyListener.java
@@ -20,9 +20,9 @@
 import android.text.NoCopySpan;
 import android.text.Spannable;
 import android.text.Spanned;
+import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
 import android.view.View;
-import android.view.KeyCharacterMap;
 
 /**
  * This base class encapsulates the behavior for tracking the state of
@@ -86,7 +86,7 @@
      * Value equals {@link KeyEvent#META_SYM_ON}.
      */
     public static final int META_SYM_ON = KeyEvent.META_SYM_ON;
-    
+
     /**
      * Flag that indicates that the SHIFT key is locked in CAPS mode.
      */
@@ -111,11 +111,11 @@
     private static final long META_CAP_USED = 1L << 32;
     private static final long META_ALT_USED = 1L << 33;
     private static final long META_SYM_USED = 1L << 34;
-    
+
     private static final long META_CAP_PRESSED = 1L << 40;
     private static final long META_ALT_PRESSED = 1L << 41;
     private static final long META_SYM_PRESSED = 1L << 42;
-    
+
     private static final long META_CAP_RELEASED = 1L << 48;
     private static final long META_ALT_RELEASED = 1L << 49;
     private static final long META_SYM_RELEASED = 1L << 50;
@@ -129,7 +129,7 @@
     private static final long META_SYM_MASK = META_SYM_ON
             | META_SYM_LOCKED | META_SYM_USED
             | META_SYM_PRESSED | META_SYM_RELEASED;
-    
+
     private static final Object CAP = new NoCopySpan.Concrete();
     private static final Object ALT = new NoCopySpan.Concrete();
     private static final Object SYM = new NoCopySpan.Concrete();
@@ -150,7 +150,7 @@
 
     /**
      * Gets the state of the meta keys.
-     * 
+     *
      * @param text the buffer in which the meta key would have been pressed.
      *
      * @return an integer in which each bit set to one represents a pressed
@@ -448,7 +448,7 @@
 
     /**
      * Gets the state of the meta keys.
-     * 
+     *
      * @param state the current meta state bits.
      *
      * @return an integer in which each bit set to one represents a pressed
@@ -635,26 +635,26 @@
     /**
      * The meta key has been pressed but has not yet been used.
      */
-    private static final int PRESSED = 
+    private static final int PRESSED =
         Spannable.SPAN_MARK_MARK | (1 << Spannable.SPAN_USER_SHIFT);
 
     /**
      * The meta key has been pressed and released but has still
      * not yet been used.
      */
-    private static final int RELEASED = 
+    private static final int RELEASED =
         Spannable.SPAN_MARK_MARK | (2 << Spannable.SPAN_USER_SHIFT);
 
     /**
      * The meta key has been pressed and used but has not yet been released.
      */
-    private static final int USED = 
+    private static final int USED =
         Spannable.SPAN_MARK_MARK | (3 << Spannable.SPAN_USER_SHIFT);
 
     /**
      * The meta key has been pressed and released without use, and then
      * pressed again; it may also have been released again.
      */
-    private static final int LOCKED = 
+    private static final int LOCKED =
         Spannable.SPAN_MARK_MARK | (4 << Spannable.SPAN_USER_SHIFT);
 }
diff --git a/core/java/android/text/method/MovementMethod.java b/core/java/android/text/method/MovementMethod.java
index 01979fd..f6fe575 100644
--- a/core/java/android/text/method/MovementMethod.java
+++ b/core/java/android/text/method/MovementMethod.java
@@ -16,10 +16,10 @@
 
 package android.text.method;
 
-import android.widget.TextView;
+import android.text.Spannable;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
-import android.text.*;
+import android.widget.TextView;
 
 /**
  * Provides cursor positioning, scrolling and text selection functionality in a {@link TextView}.
diff --git a/core/java/android/text/method/MultiTapKeyListener.java b/core/java/android/text/method/MultiTapKeyListener.java
index 95ac0a1..5770482 100644
--- a/core/java/android/text/method/MultiTapKeyListener.java
+++ b/core/java/android/text/method/MultiTapKeyListener.java
@@ -16,13 +16,16 @@
 
 package android.text.method;
 
-import android.view.KeyEvent;
-import android.view.View;
 import android.os.Handler;
 import android.os.SystemClock;
-import android.text.*;
+import android.text.Editable;
+import android.text.Selection;
+import android.text.SpanWatcher;
+import android.text.Spannable;
 import android.text.method.TextKeyListener.Capitalize;
 import android.util.SparseArray;
+import android.view.KeyEvent;
+import android.view.View;
 
 /**
  * This is the standard key listener for alphabetic input on 12-key
@@ -81,7 +84,7 @@
     public int getInputType() {
         return makeTextContentType(mCapitalize, mAutoText);
     }
-    
+
     public boolean onKeyDown(View view, Editable content,
                              int keyCode, KeyEvent event) {
         int selStart, selEnd;
@@ -198,7 +201,7 @@
             if (selEnd != oldStart) {
                 Selection.setSelection(content, oldStart, selEnd);
 
-                content.setSpan(TextKeyListener.LAST_TYPED, 
+                content.setSpan(TextKeyListener.LAST_TYPED,
                                 oldStart, selEnd,
                                 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
 
diff --git a/core/java/android/text/method/NumberKeyListener.java b/core/java/android/text/method/NumberKeyListener.java
index 988d566..6b12b7e 100644
--- a/core/java/android/text/method/NumberKeyListener.java
+++ b/core/java/android/text/method/NumberKeyListener.java
@@ -16,14 +16,14 @@
 
 package android.text.method;
 
-import android.view.KeyEvent;
-import android.view.View;
 import android.text.Editable;
 import android.text.InputFilter;
 import android.text.Selection;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.Spanned;
+import android.view.KeyEvent;
+import android.view.View;
 
 /**
  * For numeric text entry
@@ -91,7 +91,7 @@
 
         return false;
     }
-    
+
     @Override
     public boolean onKeyDown(View view, Editable content,
                              int keyCode, KeyEvent event) {
diff --git a/core/java/android/text/method/PasswordTransformationMethod.java b/core/java/android/text/method/PasswordTransformationMethod.java
index 88a69b9..4485e38 100644
--- a/core/java/android/text/method/PasswordTransformationMethod.java
+++ b/core/java/android/text/method/PasswordTransformationMethod.java
@@ -16,18 +16,18 @@
 
 package android.text.method;
 
+import android.graphics.Rect;
 import android.os.Handler;
 import android.os.SystemClock;
-import android.graphics.Rect;
-import android.view.View;
 import android.text.Editable;
 import android.text.GetChars;
 import android.text.NoCopySpan;
+import android.text.Spannable;
+import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.TextWatcher;
-import android.text.Spanned;
-import android.text.Spannable;
 import android.text.style.UpdateLayout;
+import android.view.View;
 
 import java.lang.ref.WeakReference;
 
diff --git a/core/java/android/text/method/QwertyKeyListener.java b/core/java/android/text/method/QwertyKeyListener.java
index b17f502..bea68b1 100644
--- a/core/java/android/text/method/QwertyKeyListener.java
+++ b/core/java/android/text/method/QwertyKeyListener.java
@@ -16,7 +16,12 @@
 
 package android.text.method;
 
-import android.text.*;
+import android.text.AutoText;
+import android.text.Editable;
+import android.text.NoCopySpan;
+import android.text.Selection;
+import android.text.Spannable;
+import android.text.TextUtils;
 import android.text.method.TextKeyListener.Capitalize;
 import android.util.SparseArray;
 import android.view.KeyCharacterMap;
@@ -80,7 +85,7 @@
     public int getInputType() {
         return makeTextContentType(mAutoCap, mAutoText);
     }
-    
+
     public boolean onKeyDown(View view, Editable content,
                              int keyCode, KeyEvent event) {
         int selStart, selEnd;
@@ -191,9 +196,9 @@
                 }
             }
 
-            if ((pref & TextKeyListener.AUTO_CAP) != 0 &&
-                Character.isLowerCase(i) && 
-                TextKeyListener.shouldCap(mAutoCap, content, selStart)) {
+            if ((pref & TextKeyListener.AUTO_CAP) != 0
+                    && Character.isLowerCase(i)
+                    && TextKeyListener.shouldCap(mAutoCap, content, selStart)) {
                 int where = content.getSpanEnd(TextKeyListener.CAPPED);
                 int flags = content.getSpanFlags(TextKeyListener.CAPPED);
 
@@ -361,9 +366,9 @@
                                   View view) {
         int len = end - start;
         boolean changecase = false;
-        
+
         String replacement = AutoText.get(src, start, end, view);
-        
+
         if (replacement == null) {
             String key = TextUtils.substring(src, start, end).toLowerCase();
             replacement = AutoText.get(key, 0, end - start, view);
@@ -372,7 +377,7 @@
             if (replacement == null)
                 return null;
         }
-        
+
         int caps = 0;
 
         if (changecase) {
diff --git a/core/java/android/text/method/ScrollingMovementMethod.java b/core/java/android/text/method/ScrollingMovementMethod.java
index b9f5d5f4..4f422cb 100644
--- a/core/java/android/text/method/ScrollingMovementMethod.java
+++ b/core/java/android/text/method/ScrollingMovementMethod.java
@@ -16,10 +16,11 @@
 
 package android.text.method;
 
+import android.text.Layout;
+import android.text.Spannable;
 import android.view.MotionEvent;
-import android.text.*;
-import android.widget.TextView;
 import android.view.View;
+import android.widget.TextView;
 
 /**
  * A movement method that interprets movement keys by scrolling the text buffer.
diff --git a/core/java/android/text/method/TextKeyListener.java b/core/java/android/text/method/TextKeyListener.java
index 994f3d7..9cbda9c 100644
--- a/core/java/android/text/method/TextKeyListener.java
+++ b/core/java/android/text/method/TextKeyListener.java
@@ -22,11 +22,16 @@
 import android.os.Handler;
 import android.provider.Settings;
 import android.provider.Settings.System;
-import android.text.*;
+import android.text.Editable;
+import android.text.InputType;
+import android.text.NoCopySpan;
+import android.text.Selection;
+import android.text.SpanWatcher;
+import android.text.Spannable;
+import android.text.TextUtils;
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
 import android.view.View;
-import android.text.InputType;
 
 import java.lang.ref.WeakReference;
 
@@ -127,7 +132,7 @@
     public int getInputType() {
         return makeTextContentType(mAutoCap, mAutoText);
     }
-    
+
     @Override
     public boolean onKeyDown(View view, Editable content,
                              int keyCode, KeyEvent event) {
@@ -213,7 +218,7 @@
         public int getInputType() {
             return InputType.TYPE_NULL;
         }
-        
+
         public boolean onKeyDown(View view, Editable content,
                                  int keyCode, KeyEvent event) {
             return false;
@@ -230,7 +235,7 @@
 
         public void clearMetaKeyState(View view, Editable content, int states) {
         }
-        
+
         public static NullKeyListener getInstance() {
             if (sInstance != null)
                 return sInstance;
diff --git a/core/java/android/text/method/TimeKeyListener.java b/core/java/android/text/method/TimeKeyListener.java
index c5bfd5c..01f4086 100644
--- a/core/java/android/text/method/TimeKeyListener.java
+++ b/core/java/android/text/method/TimeKeyListener.java
@@ -16,8 +16,8 @@
 
 package android.text.method;
 
-import android.view.KeyEvent;
 import android.text.InputType;
+import android.view.KeyEvent;
 
 /**
  * For entering times in a text field.
@@ -32,7 +32,7 @@
         return InputType.TYPE_CLASS_DATETIME
         | InputType.TYPE_DATETIME_VARIATION_TIME;
     }
-    
+
     @Override
     protected char[] getAcceptedChars()
     {
diff --git a/core/java/android/text/method/WordIterator.java b/core/java/android/text/method/WordIterator.java
index 89ed08c..17938a8 100644
--- a/core/java/android/text/method/WordIterator.java
+++ b/core/java/android/text/method/WordIterator.java
@@ -18,8 +18,8 @@
 
 import android.annotation.NonNull;
 import android.icu.text.BreakIterator;
-import android.text.Selection;
 import android.text.CharSequenceCharacterIterator;
+import android.text.Selection;
 
 import java.util.Locale;
 
diff --git a/core/java/android/text/style/DrawableMarginSpan.java b/core/java/android/text/style/DrawableMarginSpan.java
index 20b6886..3524179 100644
--- a/core/java/android/text/style/DrawableMarginSpan.java
+++ b/core/java/android/text/style/DrawableMarginSpan.java
@@ -16,11 +16,11 @@
 
 package android.text.style;
 
-import android.graphics.drawable.Drawable;
-import android.graphics.Paint;
 import android.graphics.Canvas;
-import android.text.Spanned;
+import android.graphics.Paint;
+import android.graphics.drawable.Drawable;
 import android.text.Layout;
+import android.text.Spanned;
 
 public class DrawableMarginSpan
 implements LeadingMarginSpan, LineHeightSpan
diff --git a/core/java/android/text/style/IconMarginSpan.java b/core/java/android/text/style/IconMarginSpan.java
index cf9a705..304c83f 100644
--- a/core/java/android/text/style/IconMarginSpan.java
+++ b/core/java/android/text/style/IconMarginSpan.java
@@ -16,11 +16,11 @@
 
 package android.text.style;
 
-import android.graphics.Paint;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
-import android.text.Spanned;
+import android.graphics.Paint;
 import android.text.Layout;
+import android.text.Spanned;
 
 public class IconMarginSpan
 implements LeadingMarginSpan, LineHeightSpan
diff --git a/core/java/android/text/style/LeadingMarginSpan.java b/core/java/android/text/style/LeadingMarginSpan.java
index 339d885..5bd2d60 100644
--- a/core/java/android/text/style/LeadingMarginSpan.java
+++ b/core/java/android/text/style/LeadingMarginSpan.java
@@ -16,8 +16,8 @@
 
 package android.text.style;
 
-import android.graphics.Paint;
 import android.graphics.Canvas;
+import android.graphics.Paint;
 import android.os.Parcel;
 import android.text.Layout;
 import android.text.ParcelableSpan;
@@ -39,7 +39,7 @@
      * Returns the amount by which to adjust the leading margin. Positive values
      * move away from the leading edge of the paragraph, negative values move
      * towards it.
-     * 
+     *
      * @param first true if the request is for the first line of a paragraph,
      * false for subsequent lines
      * @return the offset for the margin.
@@ -49,7 +49,7 @@
     /**
      * Renders the leading margin.  This is called before the margin has been
      * adjusted by the value returned by {@link #getLeadingMargin(boolean)}.
-     * 
+     *
      * @param c the canvas
      * @param p the paint. The this should be left unchanged on exit.
      * @param x the current position of the margin
@@ -98,11 +98,11 @@
      */
     public static class Standard implements LeadingMarginSpan, ParcelableSpan {
         private final int mFirst, mRest;
-        
+
         /**
          * Constructor taking separate indents for the first and subsequent
          * lines.
-         * 
+         *
          * @param first the indent for the first line of the paragraph
          * @param rest the indent for the remaining lines of the paragraph
          */
@@ -123,7 +123,7 @@
             mFirst = src.readInt();
             mRest = src.readInt();
         }
-        
+
         public int getSpanTypeId() {
         return getSpanTypeIdInternal();
     }
@@ -132,7 +132,7 @@
     public int getSpanTypeIdInternal() {
             return TextUtils.LEADING_MARGIN_SPAN;
         }
-        
+
         public int describeContents() {
             return 0;
         }
diff --git a/core/java/android/text/style/LineBackgroundSpan.java b/core/java/android/text/style/LineBackgroundSpan.java
index 854aeaf..9c7859f 100644
--- a/core/java/android/text/style/LineBackgroundSpan.java
+++ b/core/java/android/text/style/LineBackgroundSpan.java
@@ -16,8 +16,8 @@
 
 package android.text.style;
 
-import android.graphics.Paint;
 import android.graphics.Canvas;
+import android.graphics.Paint;
 
 public interface LineBackgroundSpan
 extends ParagraphStyle
diff --git a/core/java/android/text/style/LocaleSpan.java b/core/java/android/text/style/LocaleSpan.java
index b842851..479ff0e 100644
--- a/core/java/android/text/style/LocaleSpan.java
+++ b/core/java/android/text/style/LocaleSpan.java
@@ -16,8 +16,6 @@
 
 package android.text.style;
 
-import com.android.internal.util.Preconditions;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.graphics.Paint;
@@ -27,6 +25,8 @@
 import android.text.TextPaint;
 import android.text.TextUtils;
 
+import com.android.internal.util.Preconditions;
+
 import java.util.Locale;
 
 /**
diff --git a/core/java/android/text/style/QuoteSpan.java b/core/java/android/text/style/QuoteSpan.java
index 0b0a82c..7217e1e 100644
--- a/core/java/android/text/style/QuoteSpan.java
+++ b/core/java/android/text/style/QuoteSpan.java
@@ -17,8 +17,8 @@
 package android.text.style;
 
 import android.annotation.ColorInt;
-import android.graphics.Paint;
 import android.graphics.Canvas;
+import android.graphics.Paint;
 import android.os.Parcel;
 import android.text.Layout;
 import android.text.ParcelableSpan;
@@ -34,7 +34,7 @@
         super();
         mColor = 0xff0000ff;
     }
-    
+
     public QuoteSpan(@ColorInt int color) {
         super();
         mColor = color;
@@ -43,7 +43,7 @@
     public QuoteSpan(Parcel src) {
         mColor = src.readInt();
     }
-    
+
     public int getSpanTypeId() {
         return getSpanTypeIdInternal();
     }
@@ -52,7 +52,7 @@
     public int getSpanTypeIdInternal() {
         return TextUtils.QUOTE_SPAN;
     }
-    
+
     public int describeContents() {
         return 0;
     }
@@ -70,7 +70,7 @@
     public int getColor() {
         return mColor;
     }
-    
+
     public int getLeadingMargin(boolean first) {
         return STRIPE_WIDTH + GAP_WIDTH;
     }
diff --git a/core/java/android/text/style/ReplacementSpan.java b/core/java/android/text/style/ReplacementSpan.java
index 07190b2..5f94ad0 100644
--- a/core/java/android/text/style/ReplacementSpan.java
+++ b/core/java/android/text/style/ReplacementSpan.java
@@ -19,8 +19,8 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.graphics.Paint;
 import android.graphics.Canvas;
+import android.graphics.Paint;
 import android.text.TextPaint;
 
 public abstract class ReplacementSpan extends MetricAffectingSpan {
diff --git a/core/java/android/text/style/TtsSpan.java b/core/java/android/text/style/TtsSpan.java
index e9153dd..c5e5df0 100644
--- a/core/java/android/text/style/TtsSpan.java
+++ b/core/java/android/text/style/TtsSpan.java
@@ -16,14 +16,14 @@
 
 package android.text.style;
 
-import java.text.NumberFormat;
-import java.util.Locale;
-
 import android.os.Parcel;
 import android.os.PersistableBundle;
 import android.text.ParcelableSpan;
 import android.text.TextUtils;
 
+import java.text.NumberFormat;
+import java.util.Locale;
+
 /**
  * A span that supplies additional meta-data for the associated text intended
  * for text-to-speech engines. If the text is being processed by a
diff --git a/core/java/android/text/util/Linkify.java b/core/java/android/text/util/Linkify.java
index ca037a2..7e6eb49 100644
--- a/core/java/android/text/util/Linkify.java
+++ b/core/java/android/text/util/Linkify.java
@@ -20,16 +20,21 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.telephony.PhoneNumberUtils;
-import android.text.method.LinkMovementMethod;
-import android.text.method.MovementMethod;
-import android.text.style.URLSpan;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.Spanned;
+import android.text.method.LinkMovementMethod;
+import android.text.method.MovementMethod;
+import android.text.style.URLSpan;
 import android.util.Patterns;
 import android.webkit.WebView;
 import android.widget.TextView;
 
+import com.android.i18n.phonenumbers.PhoneNumberMatch;
+import com.android.i18n.phonenumbers.PhoneNumberUtil;
+import com.android.i18n.phonenumbers.PhoneNumberUtil.Leniency;
+
+import libcore.util.EmptyArray;
 
 import java.io.UnsupportedEncodingException;
 import java.lang.annotation.Retention;
@@ -42,12 +47,6 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import com.android.i18n.phonenumbers.PhoneNumberMatch;
-import com.android.i18n.phonenumbers.PhoneNumberUtil;
-import com.android.i18n.phonenumbers.PhoneNumberUtil.Leniency;
-
-import libcore.util.EmptyArray;
-
 /**
  *  Linkify take a piece of text and a regular expression and turns all of the
  *  regex matches in the text into clickable links.  This is particularly
diff --git a/core/java/android/transition/ChangeBounds.java b/core/java/android/transition/ChangeBounds.java
index a95da97..b6d8aa4 100644
--- a/core/java/android/transition/ChangeBounds.java
+++ b/core/java/android/transition/ChangeBounds.java
@@ -16,19 +16,18 @@
 
 package android.transition;
 
-import android.animation.AnimatorSet;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.PointF;
-
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
 import android.animation.RectEvaluator;
+import android.content.Context;
+import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Path;
+import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
diff --git a/core/java/android/transition/ChangeScroll.java b/core/java/android/transition/ChangeScroll.java
index e092685..8a3fd1c 100644
--- a/core/java/android/transition/ChangeScroll.java
+++ b/core/java/android/transition/ChangeScroll.java
@@ -19,8 +19,6 @@
 import android.animation.Animator;
 import android.animation.ObjectAnimator;
 import android.content.Context;
-import android.transition.Transition;
-import android.transition.TransitionValues;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/core/java/android/transition/ChangeTransform.java b/core/java/android/transition/ChangeTransform.java
index 9749121..4b0b065 100644
--- a/core/java/android/transition/ChangeTransform.java
+++ b/core/java/android/transition/ChangeTransform.java
@@ -30,6 +30,7 @@
 import android.view.GhostView;
 import android.view.View;
 import android.view.ViewGroup;
+
 import com.android.internal.R;
 
 /**
diff --git a/core/java/android/transition/Explode.java b/core/java/android/transition/Explode.java
index 3445ef2..5f078ca 100644
--- a/core/java/android/transition/Explode.java
+++ b/core/java/android/transition/Explode.java
@@ -15,8 +15,6 @@
  */
 package android.transition;
 
-import com.android.internal.R;
-
 import android.animation.Animator;
 import android.animation.TimeInterpolator;
 import android.content.Context;
@@ -26,6 +24,8 @@
 import android.view.ViewGroup;
 import android.view.animation.AccelerateInterpolator;
 import android.view.animation.DecelerateInterpolator;
+
+import com.android.internal.R;
 /**
  * This transition tracks changes to the visibility of target views in the
  * start and end scenes and moves views in or out from the edges of the
diff --git a/core/java/android/transition/PatternPathMotion.java b/core/java/android/transition/PatternPathMotion.java
index f23863f..7a2c191 100644
--- a/core/java/android/transition/PatternPathMotion.java
+++ b/core/java/android/transition/PatternPathMotion.java
@@ -15,8 +15,6 @@
  */
 package android.transition;
 
-import com.android.internal.R;
-
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Matrix;
@@ -25,6 +23,8 @@
 import android.util.AttributeSet;
 import android.util.PathParser;
 
+import com.android.internal.R;
+
 /**
  * A PathMotion that takes a Path pattern and applies it to the separation between two points.
  * The starting point of the Path will be moved to the origin and the end point will be scaled
diff --git a/core/java/android/transition/Slide.java b/core/java/android/transition/Slide.java
index 2645f86..9cf3210 100644
--- a/core/java/android/transition/Slide.java
+++ b/core/java/android/transition/Slide.java
@@ -26,6 +26,7 @@
 import android.view.ViewGroup;
 import android.view.animation.AccelerateInterpolator;
 import android.view.animation.DecelerateInterpolator;
+
 import com.android.internal.R;
 
 import java.lang.annotation.Retention;
diff --git a/core/java/android/transition/TransitionInflater.java b/core/java/android/transition/TransitionInflater.java
index cbf76bc..4c5a717 100644
--- a/core/java/android/transition/TransitionInflater.java
+++ b/core/java/android/transition/TransitionInflater.java
@@ -17,11 +17,6 @@
 package android.transition;
 
 import android.annotation.TransitionRes;
-import com.android.internal.R;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -32,6 +27,11 @@
 import android.view.InflateException;
 import android.view.ViewGroup;
 
+import com.android.internal.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
diff --git a/core/java/android/transition/TranslationAnimationCreator.java b/core/java/android/transition/TranslationAnimationCreator.java
index b07f3f8..ae76e62 100644
--- a/core/java/android/transition/TranslationAnimationCreator.java
+++ b/core/java/android/transition/TranslationAnimationCreator.java
@@ -15,8 +15,6 @@
  */
 package android.transition;
 
-import com.android.internal.R;
-
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
@@ -25,6 +23,8 @@
 import android.transition.Transition.TransitionListener;
 import android.view.View;
 
+import com.android.internal.R;
+
 /**
  * This class is used by Slide and Explode to create an animator that goes from the start
  * position to the end position. It takes into account the canceled position so that it
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 85a4bf9..3beb00f 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -16,11 +16,11 @@
 
 package android.view;
 
+import static android.Manifest.permission.CONFIGURE_DISPLAY_COLOR_MODE;
+
 import android.annotation.IntDef;
 import android.annotation.RequiresPermission;
-import android.content.Context;
 import android.content.res.CompatibilityInfo;
-import android.content.res.Resources;
 import android.graphics.PixelFormat;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -36,8 +36,6 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
 
-import static android.Manifest.permission.CONFIGURE_DISPLAY_COLOR_MODE;
-
 /**
  * Provides information about the size and density of a logical display.
  * <p>
diff --git a/core/java/android/view/DisplayEventReceiver.java b/core/java/android/view/DisplayEventReceiver.java
index 4393992..67cdfc5 100644
--- a/core/java/android/view/DisplayEventReceiver.java
+++ b/core/java/android/view/DisplayEventReceiver.java
@@ -16,13 +16,13 @@
 
 package android.view;
 
-import dalvik.annotation.optimization.FastNative;
-import dalvik.system.CloseGuard;
-
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
 
+import dalvik.annotation.optimization.FastNative;
+import dalvik.system.CloseGuard;
+
 import java.lang.ref.WeakReference;
 
 /**
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index bc40849..1aef6ec 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -23,10 +23,10 @@
 import android.util.ArraySet;
 import android.util.DisplayMetrics;
 
-import java.util.Arrays;
-
 import libcore.util.Objects;
 
+import java.util.Arrays;
+
 /**
  * Describes the characteristics of a particular logical display.
  * @hide
diff --git a/core/java/android/view/FallbackEventHandler.java b/core/java/android/view/FallbackEventHandler.java
index dd68d89..8e00d6d 100644
--- a/core/java/android/view/FallbackEventHandler.java
+++ b/core/java/android/view/FallbackEventHandler.java
@@ -24,4 +24,3 @@
     public void preDispatchKeyEvent(KeyEvent event);
     public boolean dispatchKeyEvent(KeyEvent event);
 }
-
diff --git a/core/java/android/view/FrameMetrics.java b/core/java/android/view/FrameMetrics.java
index 2b938d0..800a63f 100644
--- a/core/java/android/view/FrameMetrics.java
+++ b/core/java/android/view/FrameMetrics.java
@@ -17,7 +17,6 @@
 package android.view;
 
 import android.annotation.IntDef;
-import android.view.Window;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/core/java/android/view/FrameMetricsObserver.java b/core/java/android/view/FrameMetricsObserver.java
index 6331357..9e81de0 100644
--- a/core/java/android/view/FrameMetricsObserver.java
+++ b/core/java/android/view/FrameMetricsObserver.java
@@ -17,15 +17,12 @@
 package android.view;
 
 import android.annotation.NonNull;
-import android.util.Log;
 import android.os.Looper;
 import android.os.MessageQueue;
 
 import com.android.internal.util.VirtualRefBasePtr;
 
-import java.lang.NullPointerException;
 import java.lang.ref.WeakReference;
-import java.lang.SuppressWarnings;
 
 /**
  * Provides streaming access to frame stats information from the rendering
diff --git a/core/java/android/view/HandlerActionQueue.java b/core/java/android/view/HandlerActionQueue.java
index 4758a34..d016a74 100644
--- a/core/java/android/view/HandlerActionQueue.java
+++ b/core/java/android/view/HandlerActionQueue.java
@@ -16,11 +16,9 @@
 
 package android.view;
 
-import com.android.internal.util.GrowingArrayUtils;
-
 import android.os.Handler;
 
-import java.util.ArrayList;
+import com.android.internal.util.GrowingArrayUtils;
 
 /**
  * Class used to enqueue pending work from Views when no Handler is attached.
diff --git a/core/java/android/view/IAssetAtlas.aidl b/core/java/android/view/IAssetAtlas.aidl
deleted file mode 100644
index edce059..0000000
--- a/core/java/android/view/IAssetAtlas.aidl
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Copyright (c) 2013, 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 android.view;
-
-import android.view.GraphicBuffer;
-
-/**
- * Programming interface to the system assets atlas. This atlas, when
- * present, holds preloaded drawable in a single, shareable graphics
- * buffer. This allows multiple processes to share the same data to
- * save up on memory.
- *
- * @hide
- */
-interface IAssetAtlas {
-    /**
-     * Indicates whether the atlas is compatible with the specified
-     * parent process id. If the atlas' ppid does not match, this
-     * method will return false.
-     */
-    boolean isCompatible(int ppid);
-
-    /**
-     * Returns the atlas buffer (texture) or null if the atlas is
-     * not available yet.
-     */
-    GraphicBuffer getBuffer();
-
-    /**
-     * Returns the map of the bitmaps stored in the atlas or null
-     * if the atlas is not available yet.
-     *
-     * Each bitmap is represented by several entries in the array:
-     * long0: SkBitmap*, the native bitmap object
-     * long1: x position
-     * long2: y position
-     * long3: rotated, 1 if the bitmap must be rotated, 0 otherwise
-     */
-    long[] getMap();
-}
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java
index f8796c3..55f64d9 100644
--- a/core/java/android/view/InputDevice.java
+++ b/core/java/android/view/InputDevice.java
@@ -19,10 +19,10 @@
 import android.content.Context;
 import android.hardware.input.InputDeviceIdentifier;
 import android.hardware.input.InputManager;
+import android.os.NullVibrator;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.Vibrator;
-import android.os.NullVibrator;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/core/java/android/view/InputEventReceiver.java b/core/java/android/view/InputEventReceiver.java
index 91ef50d..20ab539 100644
--- a/core/java/android/view/InputEventReceiver.java
+++ b/core/java/android/view/InputEventReceiver.java
@@ -16,13 +16,13 @@
 
 package android.view;
 
-import dalvik.system.CloseGuard;
-
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
 import android.util.SparseIntArray;
 
+import dalvik.system.CloseGuard;
+
 import java.lang.ref.WeakReference;
 
 /**
diff --git a/core/java/android/view/InputEventSender.java b/core/java/android/view/InputEventSender.java
index 304ea3f..b25fb65 100644
--- a/core/java/android/view/InputEventSender.java
+++ b/core/java/android/view/InputEventSender.java
@@ -16,12 +16,12 @@
 
 package android.view;
 
-import dalvik.system.CloseGuard;
-
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
 
+import dalvik.system.CloseGuard;
+
 import java.lang.ref.WeakReference;
 
 /**
diff --git a/core/java/android/view/InputFilter.java b/core/java/android/view/InputFilter.java
index 4aba30c..d0dab40 100644
--- a/core/java/android/view/InputFilter.java
+++ b/core/java/android/view/InputFilter.java
@@ -20,12 +20,6 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.RemoteException;
-import android.view.IInputFilter;
-import android.view.InputEvent;
-import android.view.InputEventConsistencyVerifier;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.WindowManagerPolicy;
 
 /**
  * Filters input events before they are dispatched to the system.
diff --git a/core/java/android/view/InputQueue.java b/core/java/android/view/InputQueue.java
index aebc601..582ae79 100644
--- a/core/java/android/view/InputQueue.java
+++ b/core/java/android/view/InputQueue.java
@@ -16,13 +16,13 @@
 
 package android.view;
 
-import dalvik.system.CloseGuard;
-
 import android.os.Looper;
 import android.os.MessageQueue;
+import android.util.LongSparseArray;
 import android.util.Pools.Pool;
 import android.util.Pools.SimplePool;
-import android.util.LongSparseArray;
+
+import dalvik.system.CloseGuard;
 
 import java.lang.ref.WeakReference;
 
diff --git a/core/java/android/view/KeyCharacterMap.java b/core/java/android/view/KeyCharacterMap.java
index c8b89e7..88f2d34 100644
--- a/core/java/android/view/KeyCharacterMap.java
+++ b/core/java/android/view/KeyCharacterMap.java
@@ -16,14 +16,13 @@
 
 package android.view;
 
+import android.hardware.input.InputManager;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.method.MetaKeyKeyListener;
 import android.util.AndroidRuntimeException;
 import android.util.SparseIntArray;
-import android.hardware.input.InputManager;
 
-import java.lang.Character;
 import java.text.Normalizer;
 
 /**
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index b73acda..5d8f336 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -21,7 +21,6 @@
 import android.text.method.MetaKeyKeyListener;
 import android.util.Log;
 import android.util.SparseIntArray;
-import android.view.KeyCharacterMap;
 import android.view.KeyCharacterMap.KeyData;
 
 /**
diff --git a/core/java/android/view/KeyboardShortcutGroup.java b/core/java/android/view/KeyboardShortcutGroup.java
index 57d07c0..78f0b30 100644
--- a/core/java/android/view/KeyboardShortcutGroup.java
+++ b/core/java/android/view/KeyboardShortcutGroup.java
@@ -15,6 +15,8 @@
  */
 package android.view;
 
+import static com.android.internal.util.Preconditions.checkNotNull;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.os.Parcel;
@@ -24,8 +26,6 @@
 import java.util.Collections;
 import java.util.List;
 
-import static com.android.internal.util.Preconditions.checkNotNull;
-
 /**
  * A group of {@link KeyboardShortcutInfo}.
  */
diff --git a/core/java/android/view/KeyboardShortcutInfo.java b/core/java/android/view/KeyboardShortcutInfo.java
index a9f2699..c934a4e 100644
--- a/core/java/android/view/KeyboardShortcutInfo.java
+++ b/core/java/android/view/KeyboardShortcutInfo.java
@@ -15,14 +15,15 @@
  */
 package android.view;
 
+import static com.android.internal.util.Preconditions.checkArgument;
+
+import static java.lang.Character.MIN_VALUE;
+
 import android.annotation.Nullable;
 import android.graphics.drawable.Icon;
 import android.os.Parcel;
 import android.os.Parcelable;
 
-import static com.android.internal.util.Preconditions.checkArgument;
-import static java.lang.Character.MIN_VALUE;
-
 /**
  * Information about a Keyboard Shortcut.
  */
diff --git a/core/java/android/view/LayoutInflater.java b/core/java/android/view/LayoutInflater.java
index 914bd56..e3ac40c 100644
--- a/core/java/android/view/LayoutInflater.java
+++ b/core/java/android/view/LayoutInflater.java
@@ -16,11 +16,6 @@
 
 package android.view;
 
-import com.android.internal.R;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.annotation.LayoutRes;
 import android.annotation.Nullable;
 import android.content.Context;
@@ -37,6 +32,11 @@
 import android.util.Xml;
 import android.widget.FrameLayout;
 
+import com.android.internal.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.util.HashMap;
@@ -51,20 +51,20 @@
  *
  * <pre>LayoutInflater inflater = (LayoutInflater)context.getSystemService
  *      (Context.LAYOUT_INFLATER_SERVICE);</pre>
- * 
+ *
  * <p>
  * To create a new LayoutInflater with an additional {@link Factory} for your
  * own views, you can use {@link #cloneInContext} to clone an existing
  * ViewFactory, and then call {@link #setFactory} on it to include your
  * Factory.
- * 
+ *
  * <p>
  * For performance reasons, view inflation relies heavily on pre-processing of
  * XML files that is done at build time. Therefore, it is not currently possible
  * to use LayoutInflater with an XmlPullParser over a plain XML file at runtime;
  * it only works with an XmlPullParser returned from a compiled resource
  * (R.<em>something</em> file.)
- * 
+ *
  * @see Context#getSystemService
  */
 public abstract class LayoutInflater {
@@ -95,7 +95,7 @@
 
     private static final HashMap<String, Constructor<? extends View>> sConstructorMap =
             new HashMap<String, Constructor<? extends View>>();
-    
+
     private HashMap<String, Boolean> mFilterMap;
 
     private TypedValue mTempValue;
@@ -114,36 +114,36 @@
     /**
      * Hook to allow clients of the LayoutInflater to restrict the set of Views that are allowed
      * to be inflated.
-     * 
+     *
      */
     public interface Filter {
         /**
-         * Hook to allow clients of the LayoutInflater to restrict the set of Views 
+         * Hook to allow clients of the LayoutInflater to restrict the set of Views
          * that are allowed to be inflated.
-         * 
+         *
          * @param clazz The class object for the View that is about to be inflated
-         * 
+         *
          * @return True if this class is allowed to be inflated, or false otherwise
          */
         @SuppressWarnings("unchecked")
         boolean onLoadClass(Class clazz);
     }
-    
+
     public interface Factory {
         /**
          * Hook you can supply that is called when inflating from a LayoutInflater.
          * You can use this to customize the tag names available in your XML
          * layout files.
-         * 
+         *
          * <p>
          * Note that it is good practice to prefix these custom names with your
          * package (i.e., com.coolcompany.apps) to avoid conflicts with system
          * names.
-         * 
+         *
          * @param name Tag name to be inflated.
          * @param context The context the view is being created in.
          * @param attrs Inflation attributes as specified in XML file.
-         * 
+         *
          * @return View Newly created view. Return null for the default
          *         behavior.
          */
@@ -171,14 +171,14 @@
     private static class FactoryMerger implements Factory2 {
         private final Factory mF1, mF2;
         private final Factory2 mF12, mF22;
-        
+
         FactoryMerger(Factory f1, Factory2 f12, Factory f2, Factory2 f22) {
             mF1 = f1;
             mF2 = f2;
             mF12 = f12;
             mF22 = f22;
         }
-        
+
         public View onCreateView(String name, Context context, AttributeSet attrs) {
             View v = mF1.onCreateView(name, context, attrs);
             if (v != null) return v;
@@ -193,13 +193,13 @@
                     : mF2.onCreateView(name, context, attrs);
         }
     }
-    
+
     /**
      * Create a new LayoutInflater instance associated with a particular Context.
      * Applications will almost always want to use
      * {@link Context#getSystemService Context.getSystemService()} to retrieve
      * the standard {@link Context#LAYOUT_INFLATER_SERVICE Context.INFLATER_SERVICE}.
-     * 
+     *
      * @param context The Context in which this LayoutInflater will create its
      * Views; most importantly, this supplies the theme from which the default
      * values for their attributes are retrieved.
@@ -212,7 +212,7 @@
      * Create a new LayoutInflater instance that is a copy of an existing
      * LayoutInflater, optionally with its Context changed.  For use in
      * implementing {@link #cloneInContext}.
-     * 
+     *
      * @param original The original LayoutInflater to copy.
      * @param newContext The new Context to use.
      */
@@ -223,7 +223,7 @@
         mPrivateFactory = original.mPrivateFactory;
         setFilter(original.mFilter);
     }
-    
+
     /**
      * Obtains the LayoutInflater from the given context.
      */
@@ -241,15 +241,15 @@
      * pointing to a different Context than the original.  This is used by
      * {@link ContextThemeWrapper} to create a new LayoutInflater to go along
      * with the new Context theme.
-     * 
+     *
      * @param newContext The new Context to associate with the new LayoutInflater.
      * May be the same as the original Context if desired.
-     * 
+     *
      * @return Returns a brand spanking new LayoutInflater object associated with
      * the given Context.
      */
     public abstract LayoutInflater cloneInContext(Context newContext);
-    
+
     /**
      * Return the context we are running in, for access to resources, class
      * loader, etc.
@@ -285,7 +285,7 @@
      * called on each element name as the xml is parsed. If the factory returns
      * a View, that is added to the hierarchy. If it returns null, the next
      * factory default {@link #onCreateView} method is called.
-     * 
+     *
      * <p>If you have an existing
      * LayoutInflater and want to add your own factory to it, use
      * {@link #cloneInContext} to clone the existing instance and then you
@@ -345,13 +345,13 @@
     public Filter getFilter() {
         return mFilter;
     }
-    
+
     /**
      * Sets the {@link Filter} to by this LayoutInflater. If a view is attempted to be inflated
      * which is not allowed by the {@link Filter}, the {@link #inflate(int, ViewGroup)} call will
      * throw an {@link InflateException}. This filter will replace any previous filter set on this
      * LayoutInflater.
-     * 
+     *
      * @param filter The Filter which restricts the set of Views that are allowed to be inflated.
      *        This filter will replace any previous filter set on this LayoutInflater.
      */
@@ -365,7 +365,7 @@
     /**
      * Inflate a new view hierarchy from the specified xml resource. Throws
      * {@link InflateException} if there is an error.
-     * 
+     *
      * @param resource ID for an XML layout resource to load (e.g.,
      *        <code>R.layout.main_page</code>)
      * @param root Optional view to be the parent of the generated hierarchy.
@@ -385,7 +385,7 @@
      * reasons, view inflation relies heavily on pre-processing of XML files
      * that is done at build time. Therefore, it is not currently possible to
      * use LayoutInflater with an XmlPullParser over a plain XML file at runtime.
-     * 
+     *
      * @param parser XML dom node containing the description of the view
      *        hierarchy.
      * @param root Optional view to be the parent of the generated hierarchy.
@@ -400,7 +400,7 @@
     /**
      * Inflate a new view hierarchy from the specified xml resource. Throws
      * {@link InflateException} if there is an error.
-     * 
+     *
      * @param resource ID for an XML layout resource to load (e.g.,
      *        <code>R.layout.main_page</code>)
      * @param root Optional view to be the parent of the generated hierarchy (if
@@ -437,7 +437,7 @@
      * reasons, view inflation relies heavily on pre-processing of XML files
      * that is done at build time. Therefore, it is not currently possible to
      * use LayoutInflater with an XmlPullParser over a plain XML file at runtime.
-     * 
+     *
      * @param parser XML dom node containing the description of the view
      *        hierarchy.
      * @param root Optional view to be the parent of the generated hierarchy (if
@@ -475,7 +475,7 @@
                 }
 
                 final String name = parser.getName();
-                
+
                 if (DEBUG) {
                     System.out.println("**************************");
                     System.out.println("Creating root view: "
@@ -579,17 +579,17 @@
      * Low-level function for instantiating a view by name. This attempts to
      * instantiate a view class of the given <var>name</var> found in this
      * LayoutInflater's ClassLoader.
-     * 
+     *
      * <p>
      * There are two things that can happen in an error case: either the
      * exception describing the error will be thrown, or a null will be
      * returned. You must deal with both possibilities -- the former will happen
      * the first time createView() is called for a class of a particular name,
      * the latter every time there-after for that class name.
-     * 
+     *
      * @param name The full name of the class to be instantiated.
      * @param attrs The XML attributes supplied for this instance.
-     * 
+     *
      * @return View The newly instantiated view, or null.
      */
     public final View createView(String name, String prefix, AttributeSet attrs)
@@ -608,7 +608,7 @@
                 // Class not found in the cache, see if it's real, and try to add it
                 clazz = mContext.getClassLoader().loadClass(
                         prefix != null ? (prefix + name) : name).asSubclass(View.class);
-                
+
                 if (mFilter != null && clazz != null) {
                     boolean allowed = mFilter.onLoadClass(clazz);
                     if (!allowed) {
@@ -627,7 +627,7 @@
                         // New class -- remember whether it is allowed
                         clazz = mContext.getClassLoader().loadClass(
                                 prefix != null ? (prefix + name) : name).asSubclass(View.class);
-                        
+
                         boolean allowed = clazz != null && mFilter.onLoadClass(clazz);
                         mFilterMap.put(name, allowed);
                         if (!allowed) {
@@ -689,10 +689,10 @@
      * given the xml element name. Override it to handle custom view objects. If
      * you override this in your subclass be sure to call through to
      * super.onCreateView(name) for names you do not recognize.
-     * 
+     *
      * @param name The fully qualified class name of the View to be create.
      * @param attrs An AttributeSet of attributes to apply to the View.
-     * 
+     *
      * @return View The View created.
      */
     protected View onCreateView(String name, AttributeSet attrs)
@@ -842,7 +842,7 @@
             }
 
             final String name = parser.getName();
-            
+
             if (TAG_REQUEST_FOCUS.equals(name)) {
                 parseRequestFocus(parser, parent);
             } else if (TAG_TAG.equals(name)) {
diff --git a/core/java/android/view/MenuInflater.java b/core/java/android/view/MenuInflater.java
index 1c67ba7..73ea9ee 100644
--- a/core/java/android/view/MenuInflater.java
+++ b/core/java/android/view/MenuInflater.java
@@ -16,11 +16,6 @@
 
 package android.view;
 
-import com.android.internal.view.menu.MenuItemImpl;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.annotation.MenuRes;
 import android.app.Activity;
 import android.content.Context;
@@ -31,6 +26,11 @@
 import android.util.Log;
 import android.util.Xml;
 
+import com.android.internal.view.menu.MenuItemImpl;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
@@ -49,15 +49,15 @@
 
     /** Menu tag name in XML. */
     private static final String XML_MENU = "menu";
-    
+
     /** Group tag name in XML. */
     private static final String XML_GROUP = "group";
-    
+
     /** Item tag name in XML. */
     private static final String XML_ITEM = "item";
 
     private static final int NO_ID = 0;
-    
+
     private static final Class<?>[] ACTION_VIEW_CONSTRUCTOR_SIGNATURE = new Class[] {Context.class};
 
     private static final Class<?>[] ACTION_PROVIDER_CONSTRUCTOR_SIGNATURE = ACTION_VIEW_CONSTRUCTOR_SIGNATURE;
@@ -71,7 +71,7 @@
 
     /**
      * Constructs a menu inflater.
-     * 
+     *
      * @see Activity#getMenuInflater()
      */
     public MenuInflater(Context context) {
@@ -96,7 +96,7 @@
     /**
      * Inflate a menu hierarchy from the specified XML resource. Throws
      * {@link InflateException} if there is an error.
-     * 
+     *
      * @param menuRes Resource ID for an XML layout resource to load (e.g.,
      *            <code>R.menu.main_activity</code>)
      * @param menu The Menu to inflate into. The items and submenus will be
@@ -107,7 +107,7 @@
         try {
             parser = mContext.getResources().getLayout(menuRes);
             AttributeSet attrs = Xml.asAttributeSet(parser);
-            
+
             parseMenu(parser, attrs, menu);
         } catch (XmlPullParserException e) {
             throw new InflateException("Error inflating menu XML", e);
@@ -140,12 +140,12 @@
                     eventType = parser.next();
                     break;
                 }
-                
+
                 throw new RuntimeException("Expecting menu, got " + tagName);
             }
             eventType = parser.next();
         } while (eventType != XmlPullParser.END_DOCUMENT);
-        
+
         boolean reachedEndOfMenu = false;
         while (!reachedEndOfMenu) {
             switch (eventType) {
@@ -153,7 +153,7 @@
                     if (lookingForEndOfUnknownTag) {
                         break;
                     }
-                    
+
                     tagName = parser.getName();
                     if (tagName.equals(XML_GROUP)) {
                         menuState.readGroup(attrs);
@@ -171,7 +171,7 @@
                         unknownTagName = tagName;
                     }
                     break;
-                    
+
                 case XmlPullParser.END_TAG:
                     tagName = parser.getName();
                     if (lookingForEndOfUnknownTag && tagName.equals(unknownTagName)) {
@@ -194,11 +194,11 @@
                         reachedEndOfMenu = true;
                     }
                     break;
-                    
+
                 case XmlPullParser.END_DOCUMENT:
                     throw new RuntimeException("Unexpected end of document");
             }
-            
+
             eventType = parser.next();
         }
     }
@@ -229,10 +229,10 @@
     private static class InflatedOnMenuItemClickListener
             implements MenuItem.OnMenuItemClickListener {
         private static final Class<?>[] PARAM_TYPES = new Class[] { MenuItem.class };
-        
+
         private Object mRealOwner;
         private Method mMethod;
-        
+
         public InflatedOnMenuItemClickListener(Object realOwner, String methodName) {
             mRealOwner = realOwner;
             Class<?> c = realOwner.getClass();
@@ -246,7 +246,7 @@
                 throw ex;
             }
         }
-        
+
         public boolean onMenuItemClick(MenuItem item) {
             try {
                 if (mMethod.getReturnType() == Boolean.TYPE) {
@@ -277,7 +277,7 @@
         }
         return owner;
     }
-    
+
     /**
      * State for the current menu.
      * <p>
@@ -316,7 +316,7 @@
         private boolean itemChecked;
         private boolean itemVisible;
         private boolean itemEnabled;
-        
+
         /**
          * Sync to attrs.xml enum, values in MenuItem:
          * - 0: never
@@ -331,7 +331,7 @@
         private String itemActionProviderClassName;
 
         private String itemListenerMethodName;
-        
+
         private ActionProvider itemActionProvider;
 
         private static final int defaultGroupId = NO_ID;
@@ -342,13 +342,13 @@
         private static final boolean defaultItemChecked = false;
         private static final boolean defaultItemVisible = true;
         private static final boolean defaultItemEnabled = true;
-        
+
         public MenuState(final Menu menu) {
             this.menu = menu;
-            
+
             resetGroup();
         }
-        
+
         public void resetGroup() {
             groupId = defaultGroupId;
             groupCategory = defaultItemCategory;
@@ -364,7 +364,7 @@
         public void readGroup(AttributeSet attrs) {
             TypedArray a = mContext.obtainStyledAttributes(attrs,
                     com.android.internal.R.styleable.MenuGroup);
-            
+
             groupId = a.getResourceId(com.android.internal.R.styleable.MenuGroup_id, defaultGroupId);
             groupCategory = a.getInt(com.android.internal.R.styleable.MenuGroup_menuCategory, defaultItemCategory);
             groupOrder = a.getInt(com.android.internal.R.styleable.MenuGroup_orderInCategory, defaultItemOrder);
@@ -374,7 +374,7 @@
 
             a.recycle();
         }
-        
+
         /**
          * Called when the parser is pointing to an item tag.
          */
@@ -436,7 +436,7 @@
                 return shortcutString.charAt(0);
             }
         }
-        
+
         private void setItem(MenuItem item) {
             item.setChecked(itemChecked)
                 .setVisible(itemVisible)
@@ -446,11 +446,11 @@
                 .setIcon(itemIconResId)
                 .setAlphabeticShortcut(itemAlphabeticShortcut)
                 .setNumericShortcut(itemNumericShortcut);
-            
+
             if (itemShowAsAction >= 0) {
                 item.setShowAsAction(itemShowAsAction);
             }
-            
+
             if (itemListenerMethodName != null) {
                 if (mContext.isRestricted()) {
                     throw new IllegalStateException("The android:onClick attribute cannot "
@@ -494,14 +494,14 @@
             setItem(item);
             return item;
         }
-        
+
         public SubMenu addSubMenuItem() {
             itemAdded = true;
             SubMenu subMenu = menu.addSubMenu(groupId, itemId, itemCategoryOrder, itemTitle);
             setItem(subMenu.getItem());
             return subMenu;
         }
-        
+
         public boolean hasAddedItem() {
             return itemAdded;
         }
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index fc79f53..998fd01 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -17,9 +17,6 @@
 package android.view;
 
 import android.annotation.NonNull;
-import android.util.SparseArray;
-import com.android.internal.util.XmlUtils;
-
 import android.annotation.XmlRes;
 import android.content.Context;
 import android.content.res.Resources;
@@ -32,6 +29,9 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Log;
+import android.util.SparseArray;
+
+import com.android.internal.util.XmlUtils;
 
 /**
  * Represents an icon that can be used as a mouse pointer.
diff --git a/core/java/android/view/RemotableViewMethod.java b/core/java/android/view/RemotableViewMethod.java
index e5cae84..03aed9a 100644
--- a/core/java/android/view/RemotableViewMethod.java
+++ b/core/java/android/view/RemotableViewMethod.java
@@ -36,6 +36,3 @@
      */
     String asyncImpl() default "";
 }
-
-
-
diff --git a/core/java/android/view/RenderNodeAnimatorSetHelper.java b/core/java/android/view/RenderNodeAnimatorSetHelper.java
index ba592d29..e1ef059 100644
--- a/core/java/android/view/RenderNodeAnimatorSetHelper.java
+++ b/core/java/android/view/RenderNodeAnimatorSetHelper.java
@@ -16,6 +16,7 @@
 package android.view;
 
 import android.animation.TimeInterpolator;
+
 import com.android.internal.view.animation.FallbackLUTInterpolator;
 import com.android.internal.view.animation.NativeInterpolatorFactory;
 import com.android.internal.view.animation.NativeInterpolatorFactoryHelper;
diff --git a/core/java/android/view/RoundScrollbarRenderer.java b/core/java/android/view/RoundScrollbarRenderer.java
index b77be8c..4c555ae 100644
--- a/core/java/android/view/RoundScrollbarRenderer.java
+++ b/core/java/android/view/RoundScrollbarRenderer.java
@@ -19,8 +19,8 @@
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
-import android.graphics.RectF;
 import android.graphics.Rect;
+import android.graphics.RectF;
 
 /**
  * Helper class for drawing round scroll bars on round Wear devices.
diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java
index 7cd161c..9787494 100644
--- a/core/java/android/view/ScaleGestureDetector.java
+++ b/core/java/android/view/ScaleGestureDetector.java
@@ -20,7 +20,6 @@
 import android.content.res.Resources;
 import android.os.Build;
 import android.os.Handler;
-import android.os.SystemClock;
 
 /**
  * Detects scaling transformation gestures using the supplied {@link MotionEvent}s.
diff --git a/core/java/android/view/SearchEvent.java b/core/java/android/view/SearchEvent.java
index 643cc3e..72b5e4b 100644
--- a/core/java/android/view/SearchEvent.java
+++ b/core/java/android/view/SearchEvent.java
@@ -16,8 +16,6 @@
 
 package android.view;
 
-import android.view.InputDevice;
-
 /**
  * Class that contains information about an event that triggers a search.
  */
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index 22e68a3..ecd5e3b 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -26,11 +26,11 @@
 import android.os.Parcelable;
 import android.util.Log;
 
+import dalvik.system.CloseGuard;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-import dalvik.system.CloseGuard;
-
 /**
  * Handle onto a raw buffer that is being managed by the screen compositor.
  *
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 6456826..b87250e 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -16,7 +16,6 @@
 
 package android.view;
 
-import dalvik.system.CloseGuard;
 import android.graphics.Bitmap;
 import android.graphics.Rect;
 import android.graphics.Region;
@@ -24,6 +23,8 @@
 import android.util.Log;
 import android.view.Surface.OutOfResourcesException;
 
+import dalvik.system.CloseGuard;
+
 /**
  * SurfaceControl
  *  @hide
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 816bcf0..80f447e 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -16,11 +16,9 @@
 
 package android.view;
 
-import com.android.internal.view.BaseIWindow;
-
 import android.content.Context;
-import android.content.res.Configuration;
 import android.content.res.CompatibilityInfo.Translator;
+import android.content.res.Configuration;
 import android.graphics.Canvas;
 import android.graphics.PixelFormat;
 import android.graphics.PorterDuff;
@@ -28,12 +26,14 @@
 import android.graphics.Region;
 import android.os.Handler;
 import android.os.Message;
+import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
 import android.os.SystemClock;
-import android.os.ParcelFileDescriptor;
 import android.util.AttributeSet;
 import android.util.Log;
 
+import com.android.internal.view.BaseIWindow;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.concurrent.locks.ReentrantLock;
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index ce390a2..0bb84cc 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -16,9 +16,9 @@
 
 package android.view;
 
-import android.app.ActivityManagerNative;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.app.ActivityManagerNative;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
@@ -916,7 +916,6 @@
             mInitialized = true;
             initSched(context, renderProxy);
             initGraphicsStats(context, renderProxy);
-            initAssetAtlas(context, renderProxy);
         }
 
         private static void initSched(Context context, long renderProxy) {
@@ -944,32 +943,6 @@
                 Log.w(LOG_TAG, "Could not acquire gfx stats buffer", t);
             }
         }
-
-        private static void initAssetAtlas(Context context, long renderProxy) {
-            IBinder binder = ServiceManager.getService("assetatlas");
-            if (binder == null) return;
-
-            IAssetAtlas atlas = IAssetAtlas.Stub.asInterface(binder);
-            try {
-                if (atlas.isCompatible(android.os.Process.myPpid())) {
-                    GraphicBuffer buffer = atlas.getBuffer();
-                    if (buffer != null) {
-                        long[] map = atlas.getMap();
-                        if (map != null) {
-                            nSetAtlas(renderProxy, buffer, map);
-                        }
-                        // If IAssetAtlas is not the same class as the IBinder
-                        // we are using a remote service and we can safely
-                        // destroy the graphic buffer
-                        if (atlas.getClass() != binder.getClass()) {
-                            buffer.destroy();
-                        }
-                    }
-                }
-            } catch (RemoteException e) {
-                Log.w(LOG_TAG, "Could not acquire atlas", e);
-            }
-        }
     }
 
     void addFrameMetricsObserver(FrameMetricsObserver observer) {
@@ -984,7 +957,6 @@
 
     static native void setupShadersDiskCache(String cacheFile);
 
-    private static native void nSetAtlas(long nativeProxy, GraphicBuffer buffer, long[] map);
     private static native void nSetProcessStatsBuffer(long nativeProxy, int fd);
     private static native int nGetRenderThreadTid(long nativeProxy);
 
diff --git a/core/java/android/view/TouchDelegate.java b/core/java/android/view/TouchDelegate.java
index 27b49db..cf36f43 100644
--- a/core/java/android/view/TouchDelegate.java
+++ b/core/java/android/view/TouchDelegate.java
@@ -17,9 +17,6 @@
 package android.view;
 
 import android.graphics.Rect;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
 
 /**
  * Helper class to handle situations where you want a view to have a larger touch area than its
@@ -33,24 +30,24 @@
  * </p>
  */
 public class TouchDelegate {
-    
+
     /**
-     * View that should receive forwarded touch events 
+     * View that should receive forwarded touch events
      */
     private View mDelegateView;
-    
+
     /**
      * Bounds in local coordinates of the containing view that should be mapped to the delegate
      * view. This rect is used for initial hit testing.
      */
     private Rect mBounds;
-    
+
     /**
      * mBounds inflated to include some slop. This rect is to track whether the motion events
      * should be considered to be be within the delegate view.
      */
     private Rect mSlopBounds;
-    
+
     /**
      * True if the delegate had been targeted on a down event (intersected mBounds).
      */
@@ -82,7 +79,7 @@
 
     /**
      * Constructor
-     * 
+     *
      * @param bounds Bounds in local coordinates of the containing view that should be mapped to
      *        the delegate view
      * @param delegateView The view that should receive motion events
@@ -99,7 +96,7 @@
     /**
      * Will forward touch events to the delegate view if the event is within the bounds
      * specified in the constructor.
-     * 
+     *
      * @param event The touch event to forward
      * @return True if the event was forwarded to the delegate, false otherwise.
      */
@@ -136,7 +133,7 @@
         }
         if (sendToDelegate) {
             final View delegateView = mDelegateView;
-            
+
             if (hit) {
                 // Offset event coordinates to be inside the target view
                 event.setLocation(delegateView.getWidth() / 2, delegateView.getHeight() / 2);
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index bdf93e4..49d664e 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -16,6 +16,14 @@
 
 package android.view;
 
+import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;
+import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
+import static android.os.Build.VERSION_CODES.KITKAT;
+import static android.os.Build.VERSION_CODES.M;
+import static android.os.Build.VERSION_CODES.N;
+
+import static java.lang.Math.max;
+
 import android.animation.AnimatorInflater;
 import android.animation.StateListAnimator;
 import android.annotation.CallSuper;
@@ -79,11 +87,11 @@
 import android.util.StateSet;
 import android.util.SuperNotCalledException;
 import android.util.TypedValue;
-import android.view.ContextMenu.ContextMenuInfo;
 import android.view.AccessibilityIterators.CharacterTextSegmentIterator;
 import android.view.AccessibilityIterators.ParagraphTextSegmentIterator;
 import android.view.AccessibilityIterators.TextSegmentIterator;
 import android.view.AccessibilityIterators.WordTextSegmentIterator;
+import android.view.ContextMenu.ContextMenuInfo;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityEventSource;
 import android.view.accessibility.AccessibilityManager;
@@ -99,17 +107,15 @@
 import android.widget.Checkable;
 import android.widget.FrameLayout;
 import android.widget.ScrollBarDrawable;
-import static android.os.Build.VERSION_CODES.*;
-import static java.lang.Math.max;
 
 import com.android.internal.R;
 import com.android.internal.util.Predicate;
 import com.android.internal.view.menu.MenuBuilder;
 import com.android.internal.widget.ScrollBarUtils;
+
 import com.google.android.collect.Lists;
 import com.google.android.collect.Maps;
 
-import java.lang.NullPointerException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.ref.WeakReference;
diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java
index e1ff0d6..047a515 100644
--- a/core/java/android/view/ViewDebug.java
+++ b/core/java/android/view/ViewDebug.java
@@ -51,8 +51,8 @@
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.FutureTask;
-import java.util.concurrent.TimeoutException;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicReference;
 
 /**
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 2e428a7..87a85f1 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -16,6 +16,8 @@
 
 package android.view;
 
+import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
+
 import android.animation.LayoutTransition;
 import android.annotation.IdRes;
 import android.annotation.NonNull;
@@ -62,8 +64,6 @@
 import java.util.List;
 import java.util.Map;
 
-import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
-
 /**
  * <p>
  * A <code>ViewGroup</code> is a special view that can contain other views
diff --git a/core/java/android/view/ViewPropertyAnimator.java b/core/java/android/view/ViewPropertyAnimator.java
index c604234..6c84b63 100644
--- a/core/java/android/view/ViewPropertyAnimator.java
+++ b/core/java/android/view/ViewPropertyAnimator.java
@@ -17,8 +17,9 @@
 package android.view;
 
 import android.animation.Animator;
-import android.animation.ValueAnimator;
 import android.animation.TimeInterpolator;
+import android.animation.ValueAnimator;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Set;
@@ -42,7 +43,7 @@
  * <p>This class is not constructed by the caller, but rather by the View whose properties
  * it will animate. Calls to {@link android.view.View#animate()} will return a reference
  * to the appropriate ViewPropertyAnimator object for that View.</p>
- * 
+ *
  */
 public class ViewPropertyAnimator {
 
@@ -332,7 +333,7 @@
      * Sets the interpolator for the underlying animator that animates the requested properties.
      * By default, the animator uses the default interpolator for ValueAnimator. Calling this method
      * will cause the declared object to be used instead.
-     * 
+     *
      * @param interpolator The TimeInterpolator to be used for ensuing property animations. A value
      * of <code>null</code> will result in linear interpolation.
      * @return This object, allowing calls to methods in this class to be chained.
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index b046e2d..2c13831 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -16,6 +16,8 @@
 
 package android.view;
 
+import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
+
 import android.annotation.ColorInt;
 import android.annotation.DrawableRes;
 import android.annotation.IdRes;
@@ -24,7 +26,6 @@
 import android.annotation.Nullable;
 import android.annotation.StyleRes;
 import android.annotation.SystemApi;
-import android.app.ActivityManagerNative;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -44,8 +45,6 @@
 import android.transition.TransitionManager;
 import android.view.accessibility.AccessibilityEvent;
 
-import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
-
 import java.util.List;
 
 /**
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index dd4e096..c1b8f04 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -23,7 +23,6 @@
 import android.os.RemoteException;
 
 import com.android.internal.os.IResultReceiver;
-import com.android.internal.R;
 
 import java.util.List;
 
@@ -38,11 +37,11 @@
  * Additional window manager specific layout parameters are defined for
  * control over how windows are displayed.  It also implements the {@link WindowManager}
  * interface, allowing you to control the displays attached to the device.
- * 
+ *
  * <p>Applications will not normally use WindowManager directly, instead relying
  * on the higher-level facilities in {@link android.app.Activity} and
  * {@link android.app.Dialog}.
- * 
+ *
  * <p>Even for low-level window manager access, it is almost never correct to use
  * this class.  For example, {@link android.app.Activity#getWindowManager}
  * provides a window manager for adding windows that are associated with that
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index da361c1..b301043 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -25,12 +25,12 @@
 import android.content.res.Configuration;
 import android.graphics.Point;
 import android.graphics.Rect;
-import android.graphics.RectF;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.RemoteException;
 import android.view.animation.Animation;
+
 import com.android.internal.policy.IShortcutService;
 
 import java.io.PrintWriter;
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index c125b32..8084195 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -21,7 +21,6 @@
 import android.annotation.NonNull;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.content.pm.ParceledListSlice;
 import android.content.pm.ServiceInfo;
 import android.os.Binder;
 import android.os.Handler;
diff --git a/core/java/android/view/animation/Animation.java b/core/java/android/view/animation/Animation.java
index d89c172..474db12 100644
--- a/core/java/android/view/animation/Animation.java
+++ b/core/java/android/view/animation/Animation.java
@@ -26,6 +26,7 @@
 import android.os.SystemProperties;
 import android.util.AttributeSet;
 import android.util.TypedValue;
+
 import dalvik.system.CloseGuard;
 
 /**
@@ -80,13 +81,13 @@
      * order.
      */
     public static final int ZORDER_NORMAL = 0;
-    
+
     /**
      * Requests that the content being animated be forced on top of all other
      * content for the duration of the animation.
      */
     public static final int ZORDER_TOP = 1;
-    
+
     /**
      * Requests that the content being animated be forced under all other
      * content for the duration of the animation.
@@ -138,7 +139,7 @@
     /**
      * Indicates whether fillBefore should be taken into account.
      */
-    boolean mFillEnabled = false;    
+    boolean mFillEnabled = false;
 
     /**
      * The time in milliseconds at which the animation must start;
@@ -240,7 +241,7 @@
 
         setDuration((long) a.getInt(com.android.internal.R.styleable.Animation_duration, 0));
         setStartOffset((long) a.getInt(com.android.internal.R.styleable.Animation_startOffset, 0));
-        
+
         setFillEnabled(a.getBoolean(com.android.internal.R.styleable.Animation_fillEnabled, mFillEnabled));
         setFillBefore(a.getBoolean(com.android.internal.R.styleable.Animation_fillBefore, mFillBefore));
         setFillAfter(a.getBoolean(com.android.internal.R.styleable.Animation_fillAfter, mFillAfter));
@@ -249,7 +250,7 @@
         setRepeatMode(a.getInt(com.android.internal.R.styleable.Animation_repeatMode, RESTART));
 
         setZAdjustment(a.getInt(com.android.internal.R.styleable.Animation_zAdjustment, ZORDER_NORMAL));
-        
+
         setBackgroundColor(a.getInt(com.android.internal.R.styleable.Animation_background, 0));
 
         setDetachWallpaper(a.getBoolean(com.android.internal.R.styleable.Animation_detachWallpaper, false));
@@ -294,13 +295,13 @@
     /**
      * Cancel the animation. Cancelling an animation invokes the animation
      * listener, if set, to notify the end of the animation.
-     * 
+     *
      * If you cancel an animation manually, you must call {@link #reset()}
      * before starting the animation again.
-     * 
-     * @see #reset() 
-     * @see #start() 
-     * @see #startNow() 
+     *
+     * @see #reset()
+     * @see #start()
+     * @see #startNow()
      */
     public void cancel() {
         if (mStarted && !mEnded) {
@@ -356,7 +357,7 @@
 
     /**
      * Sets the handler used to invoke listeners.
-     * 
+     *
      * @hide
      */
     public void setListenerHandler(Handler handler) {
@@ -424,7 +425,7 @@
 
     /**
      * How long this animation should last. The duration cannot be negative.
-     * 
+     *
      * @param durationMillis Duration in milliseconds
      *
      * @throws java.lang.IllegalArgumentException if the duration is < 0
@@ -443,7 +444,7 @@
      * than <var>durationMillis</var>.  In addition to adjusting the duration
      * itself, this ensures that the repeat count also will not make it run
      * longer than the given time.
-     * 
+     *
      * @param durationMillis The maximum duration the animation is allowed
      * to run.
      */
@@ -455,7 +456,7 @@
             mRepeatCount = 0;
             return;
         }
-        
+
         long dur = mDuration + mStartOffset;
         if (dur > durationMillis) {
             mDuration = durationMillis-mStartOffset;
@@ -480,7 +481,7 @@
             }
         }
     }
-    
+
     /**
      * How much to scale the duration by.
      *
@@ -528,7 +529,7 @@
     /**
      * Defines what this animation should do when it reaches the end. This
      * setting is applied only when the repeat count is either greater than
-     * 0 or {@link #INFINITE}. Defaults to {@link #RESTART}. 
+     * 0 or {@link #INFINITE}. Defaults to {@link #RESTART}.
      *
      * @param repeatMode {@link #RESTART} or {@link #REVERSE}
      * @attr ref android.R.styleable#Animation_repeatMode
@@ -606,7 +607,7 @@
      * @param fillAfter true if the animation should apply its transformation after it ends
      * @attr ref android.R.styleable#Animation_fillAfter
      *
-     * @see #setFillEnabled(boolean) 
+     * @see #setFillEnabled(boolean)
      */
     public void setFillAfter(boolean fillAfter) {
         mFillAfter = fillAfter;
@@ -614,7 +615,7 @@
 
     /**
      * Set the Z ordering mode to use while running the animation.
-     * 
+     *
      * @param zAdjustment The desired mode, one of {@link #ZORDER_NORMAL},
      * {@link #ZORDER_TOP}, or {@link #ZORDER_BOTTOM}.
      * @attr ref android.R.styleable#Animation_zAdjustment
@@ -622,7 +623,7 @@
     public void setZAdjustment(int zAdjustment) {
         mZAdjustment = zAdjustment;
     }
-    
+
     /**
      * Set background behind animation.
      *
@@ -634,11 +635,11 @@
     }
 
     /**
-     * The scale factor is set by the call to <code>getTransformation</code>. Overrides of 
+     * The scale factor is set by the call to <code>getTransformation</code>. Overrides of
      * {@link #getTransformation(long, Transformation, float)} will get this value
      * directly. Overrides of {@link #applyTransformation(float, Transformation)} can
      * call this method to get the value.
-     * 
+     *
      * @return float The scale factor that should be applied to pre-scaled values in
      * an Animation such as the pivot points in {@link ScaleAnimation} and {@link RotateAnimation}.
      */
@@ -748,7 +749,7 @@
     /**
      * Returns the Z ordering mode to use while running the animation as
      * previously set by {@link #setZAdjustment}.
-     * 
+     *
      * @return Returns one of {@link #ZORDER_NORMAL},
      * {@link #ZORDER_TOP}, or {@link #ZORDER_BOTTOM}.
      * @attr ref android.R.styleable#Animation_zAdjustment
@@ -827,7 +828,7 @@
     public long computeDurationHint() {
         return (getStartOffset() + getDuration()) * (getRepeatCount() + 1);
     }
-    
+
     /**
      * Gets the transformation to apply at a specified point in time. Implementations of this
      * method should always replace the specified Transformation or document they are doing
@@ -975,7 +976,7 @@
      * their transforms given an interpolation value.  Implementations of this
      * method should always replace the specified Transformation or document
      * they are doing otherwise.
-     * 
+     *
      * @param interpolatedTime The value of the normalized time (0.0 to 1.0)
      *        after it has been run through the interpolation function.
      * @param t The Transformation object to fill in with the current
@@ -1015,7 +1016,7 @@
      * @param bottom
      * @param invalidate
      * @param transformation
-     * 
+     *
      * @hide
      */
     public void getInvalidateRegion(int left, int top, int right, int bottom,
@@ -1072,7 +1073,7 @@
 
     /**
      * Return true if this animation changes the view's alpha property.
-     * 
+     *
      * @hide
      */
     public boolean hasAlpha() {
diff --git a/core/java/android/view/animation/AnimationSet.java b/core/java/android/view/animation/AnimationSet.java
index 71c7450..09d4dfc 100644
--- a/core/java/android/view/animation/AnimationSet.java
+++ b/core/java/android/view/animation/AnimationSet.java
@@ -18,17 +18,17 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
+import android.graphics.RectF;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.graphics.RectF;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
  * Represents a group of Animations that should be played together.
- * The transformation of each individual animation are composed 
- * together into a single transform. 
+ * The transformation of each individual animation are composed
+ * together into a single transform.
  * If AnimationSet sets any properties that its children also set
  * (for example, duration or fillBefore), the values of AnimationSet
  * override the child values.
@@ -72,17 +72,17 @@
     private long[] mStoredOffsets;
 
     /**
-     * Constructor used when an AnimationSet is loaded from a resource. 
-     * 
+     * Constructor used when an AnimationSet is loaded from a resource.
+     *
      * @param context Application context to use
      * @param attrs Attribute set from which to read values
      */
     public AnimationSet(Context context, AttributeSet attrs) {
         super(context, attrs);
-        
+
         TypedArray a =
             context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.AnimationSet);
-        
+
         setFlag(PROPERTY_SHARE_INTERPOLATOR_MASK,
                 a.getBoolean(com.android.internal.R.styleable.AnimationSet_shareInterpolator, true));
         init();
@@ -108,11 +108,11 @@
 
         a.recycle();
     }
-    
-    
+
+
     /**
      * Constructor to use when building an AnimationSet from code
-     * 
+     *
      * @param shareInterpolator Pass true if all of the animations in this set
      *        should use the interpolator associated with this AnimationSet.
      *        Pass false if each animation should use its own interpolator.
@@ -244,10 +244,10 @@
 
         mDirty = true;
     }
-    
+
     /**
      * Sets the start time of this animation and all child animations
-     * 
+     *
      * @see android.view.animation.Animation#setStartTime(long)
      */
     @Override
@@ -289,11 +289,11 @@
             animations.get(i).restrictDuration(durationMillis);
         }
     }
-    
+
     /**
-     * The duration of an AnimationSet is defined to be the 
+     * The duration of an AnimationSet is defined to be the
      * duration of the longest child animation.
-     * 
+     *
      * @see android.view.animation.Animation#getDuration()
      */
     @Override
@@ -317,7 +317,7 @@
     /**
      * The duration hint of an animation set is the maximum of the duration
      * hints of all of its component animations.
-     * 
+     *
      * @see android.view.animation.Animation#computeDurationHint
      */
     public long computeDurationHint() {
@@ -362,7 +362,7 @@
     /**
      * The transformation of an animation set is the concatenation of all of its
      * component animations.
-     * 
+     *
      * @see android.view.animation.Animation#getTransformation
      */
     @Override
@@ -404,7 +404,7 @@
 
         return more;
     }
-    
+
     /**
      * @see android.view.animation.Animation#scaleCurrentDuration(float)
      */
diff --git a/core/java/android/view/animation/AnimationUtils.java b/core/java/android/view/animation/AnimationUtils.java
index 351b6db..f5c3613 100644
--- a/core/java/android/view/animation/AnimationUtils.java
+++ b/core/java/android/view/animation/AnimationUtils.java
@@ -16,19 +16,19 @@
 
 package android.view.animation;
 
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.annotation.AnimRes;
 import android.annotation.InterpolatorRes;
 import android.content.Context;
 import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
 import android.content.res.Resources.Theme;
 import android.content.res.XmlResourceParser;
-import android.content.res.Resources.NotFoundException;
+import android.os.SystemClock;
 import android.util.AttributeSet;
 import android.util.Xml;
-import android.os.SystemClock;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
 
diff --git a/core/java/android/view/animation/AnticipateInterpolator.java b/core/java/android/view/animation/AnticipateInterpolator.java
index fb66c31..7a837c3 100644
--- a/core/java/android/view/animation/AnticipateInterpolator.java
+++ b/core/java/android/view/animation/AnticipateInterpolator.java
@@ -18,8 +18,8 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.content.res.TypedArray;
 import android.content.res.Resources.Theme;
+import android.content.res.TypedArray;
 import android.util.AttributeSet;
 
 import com.android.internal.R;
diff --git a/core/java/android/view/animation/AnticipateOvershootInterpolator.java b/core/java/android/view/animation/AnticipateOvershootInterpolator.java
index 1af72da..9a75134 100644
--- a/core/java/android/view/animation/AnticipateOvershootInterpolator.java
+++ b/core/java/android/view/animation/AnticipateOvershootInterpolator.java
@@ -16,6 +16,10 @@
 
 package android.view.animation;
 
+import static com.android.internal.R.styleable.AnticipateOvershootInterpolator;
+import static com.android.internal.R.styleable.AnticipateOvershootInterpolator_extraTension;
+import static com.android.internal.R.styleable.AnticipateOvershootInterpolator_tension;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
@@ -26,10 +30,6 @@
 import com.android.internal.view.animation.NativeInterpolatorFactory;
 import com.android.internal.view.animation.NativeInterpolatorFactoryHelper;
 
-import static com.android.internal.R.styleable.AnticipateOvershootInterpolator_extraTension;
-import static com.android.internal.R.styleable.AnticipateOvershootInterpolator_tension;
-import static com.android.internal.R.styleable.AnticipateOvershootInterpolator;
-
 /**
  * An interpolator where the change starts backward then flings forward and overshoots
  * the target value and finally goes back to the final value.
diff --git a/core/java/android/view/animation/CycleInterpolator.java b/core/java/android/view/animation/CycleInterpolator.java
index 663c109..72d64a1 100644
--- a/core/java/android/view/animation/CycleInterpolator.java
+++ b/core/java/android/view/animation/CycleInterpolator.java
@@ -18,8 +18,8 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.content.res.TypedArray;
 import android.content.res.Resources.Theme;
+import android.content.res.TypedArray;
 import android.util.AttributeSet;
 
 import com.android.internal.R;
diff --git a/core/java/android/view/animation/DecelerateInterpolator.java b/core/java/android/view/animation/DecelerateInterpolator.java
index f426f60..f89743c 100644
--- a/core/java/android/view/animation/DecelerateInterpolator.java
+++ b/core/java/android/view/animation/DecelerateInterpolator.java
@@ -18,8 +18,8 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.content.res.TypedArray;
 import android.content.res.Resources.Theme;
+import android.content.res.TypedArray;
 import android.util.AttributeSet;
 
 import com.android.internal.R;
diff --git a/core/java/android/view/animation/GridLayoutAnimationController.java b/core/java/android/view/animation/GridLayoutAnimationController.java
index 9161d8b..0f189ae 100644
--- a/core/java/android/view/animation/GridLayoutAnimationController.java
+++ b/core/java/android/view/animation/GridLayoutAnimationController.java
@@ -16,11 +16,11 @@
 
 package android.view.animation;
 
-import android.view.View;
-import android.view.ViewGroup;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
 
 import java.util.Random;
 
@@ -43,7 +43,7 @@
  *
  * @see LayoutAnimationController
  * @see android.widget.GridView
- * 
+ *
  * @attr ref android.R.styleable#GridLayoutAnimation_columnDelay
  * @attr ref android.R.styleable#GridLayoutAnimation_rowDelay
  * @attr ref android.R.styleable#GridLayoutAnimation_direction
@@ -206,7 +206,7 @@
      *
      * @see #getRowDelay()
      * @see #getColumnDelay()
-     * @see #setColumnDelay(float) 
+     * @see #setColumnDelay(float)
      */
     public void setRowDelay(float rowDelay) {
         mRowDelay = rowDelay;
diff --git a/core/java/android/view/inputmethod/BaseInputConnection.java b/core/java/android/view/inputmethod/BaseInputConnection.java
index 38962a3..5f7a0f7 100644
--- a/core/java/android/view/inputmethod/BaseInputConnection.java
+++ b/core/java/android/view/inputmethod/BaseInputConnection.java
@@ -1,12 +1,12 @@
 /*
  * Copyright (C) 2008 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
@@ -35,7 +35,6 @@
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
 import android.view.View;
-import android.view.ViewRootImpl;
 
 class ComposingText implements NoCopySpan {
 }
@@ -56,25 +55,25 @@
     protected final InputMethodManager mIMM;
     final View mTargetView;
     final boolean mDummyMode;
-    
+
     private Object[] mDefaultComposingSpans;
-    
+
     Editable mEditable;
     KeyCharacterMap mKeyCharacterMap;
-    
+
     BaseInputConnection(InputMethodManager mgr, boolean fullEditor) {
         mIMM = mgr;
         mTargetView = null;
         mDummyMode = !fullEditor;
     }
-    
+
     public BaseInputConnection(View targetView, boolean fullEditor) {
         mIMM = (InputMethodManager)targetView.getContext().getSystemService(
                 Context.INPUT_METHOD_SERVICE);
         mTargetView = targetView;
         mDummyMode = !fullEditor;
     }
-    
+
     public static final void removeComposingSpans(Spannable text) {
         text.removeSpan(COMPOSING);
         Object[] sps = text.getSpans(0, text.length(), Object.class);
@@ -104,8 +103,8 @@
                 }
 
                 final int fl = text.getSpanFlags(o);
-                if ((fl&(Spanned.SPAN_COMPOSING|Spanned.SPAN_POINT_MARK_MASK)) 
-                        != (Spanned.SPAN_COMPOSING|Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)) {
+                if ((fl & (Spanned.SPAN_COMPOSING | Spanned.SPAN_POINT_MARK_MASK))
+                        != (Spanned.SPAN_COMPOSING | Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)) {
                     text.setSpan(o, text.getSpanStart(o), text.getSpanEnd(o),
                             (fl & ~Spanned.SPAN_POINT_MARK_MASK)
                                     | Spanned.SPAN_COMPOSING
@@ -117,15 +116,15 @@
         text.setSpan(COMPOSING, start, end,
                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);
     }
-    
+
     public static int getComposingSpanStart(Spannable text) {
         return text.getSpanStart(COMPOSING);
     }
-    
+
     public static int getComposingSpanEnd(Spannable text) {
         return text.getSpanEnd(COMPOSING);
     }
-    
+
     /**
      * Return the target of edit operations.  The default implementation
      * returns its own fake editable that is just used for composing text;
@@ -139,7 +138,7 @@
         }
         return mEditable;
     }
-    
+
     /**
      * Default implementation does nothing.
      */
@@ -452,10 +451,10 @@
      */
     public int getCursorCapsMode(int reqModes) {
         if (mDummyMode) return 0;
-        
+
         final Editable content = getEditable();
         if (content == null) return 0;
-        
+
         int a = Selection.getSelectionStart(content);
         int b = Selection.getSelectionEnd(content);
 
@@ -495,7 +494,7 @@
         if (a <= 0) {
             return "";
         }
-        
+
         if (length > a) {
             length = a;
         }
@@ -702,7 +701,7 @@
         if (!mDummyMode) {
             return;
         }
-        
+
         Editable content = getEditable();
         if (content != null) {
             final int N = content.length();
@@ -727,7 +726,7 @@
                     return;
                 }
             }
-            
+
             // Otherwise, revert to the special key event containing
             // the actual characters.
             KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(),
@@ -768,7 +767,7 @@
         if (content == null) {
             return;
         }
-        
+
         beginBatchEdit();
 
         // delete composing text set previously.
@@ -776,7 +775,7 @@
         int b = getComposingSpanEnd(content);
 
         if (DEBUG) Log.v(TAG, "Composing span: " + a + " to " + b);
-        
+
         if (b < a) {
             int tmp = a;
             a = b;
@@ -814,11 +813,11 @@
             }
             setComposingSpans(sp);
         }
-        
+
         if (DEBUG) Log.v(TAG, "Replacing from " + a + " to " + b + " with \""
                 + text + "\", composing=" + composing
                 + ", type=" + text.getClass().getCanonicalName());
-        
+
         if (DEBUG) {
             LogPrinter lp = new LogPrinter(Log.VERBOSE, TAG);
             lp.println("Current text:");
@@ -842,13 +841,13 @@
         Selection.setSelection(content, newCursorPosition);
 
         content.replace(a, b, text);
-        
+
         if (DEBUG) {
             LogPrinter lp = new LogPrinter(Log.VERBOSE, TAG);
             lp.println("Final text:");
             TextUtils.dumpSpans(content, lp, "  ");
         }
-        
+
         endBatchEdit();
     }
 
diff --git a/core/java/android/view/inputmethod/InputConnectionInspector.java b/core/java/android/view/inputmethod/InputConnectionInspector.java
index 2b292bb..5f25bf5 100644
--- a/core/java/android/view/inputmethod/InputConnectionInspector.java
+++ b/core/java/android/view/inputmethod/InputConnectionInspector.java
@@ -16,6 +16,8 @@
 
 package android.view.inputmethod;
 
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -28,8 +30,6 @@
 import java.util.Map;
 import java.util.WeakHashMap;
 
-import static java.lang.annotation.RetentionPolicy.SOURCE;
-
 /**
  * @hide
  */
diff --git a/core/java/android/view/inputmethod/InputMethodInfo.java b/core/java/android/view/inputmethod/InputMethodInfo.java
index 661b52f..5c8e6dc 100644
--- a/core/java/android/view/inputmethod/InputMethodInfo.java
+++ b/core/java/android/view/inputmethod/InputMethodInfo.java
@@ -16,9 +16,6 @@
 
 package android.view.inputmethod;
 
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
@@ -39,6 +36,9 @@
 import android.util.Xml;
 import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
 
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index ca370dc..2e99092 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -1,12 +1,12 @@
 /*
  * Copyright (C) 2007-2008 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
@@ -16,15 +16,7 @@
 
 package android.view.inputmethod;
 
-import com.android.internal.inputmethod.IInputContentUriToken;
-import com.android.internal.os.SomeArgs;
-import com.android.internal.view.IInputConnectionWrapper;
-import com.android.internal.view.IInputContext;
-import com.android.internal.view.IInputMethodClient;
-import com.android.internal.view.IInputMethodManager;
-import com.android.internal.view.IInputMethodSession;
-import com.android.internal.view.InputBindResult;
-import com.android.internal.view.InputMethodClient;
+import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -40,8 +32,8 @@
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.ServiceManager;
-import android.os.Trace;
 import android.os.ServiceManager.ServiceNotFoundException;
+import android.os.Trace;
 import android.text.TextUtils;
 import android.text.style.SuggestionSpan;
 import android.util.Log;
@@ -56,11 +48,19 @@
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.ViewRootImpl;
-import android.view.textservice.TextServicesManager;
+
+import com.android.internal.inputmethod.IInputContentUriToken;
+import com.android.internal.os.SomeArgs;
+import com.android.internal.view.IInputConnectionWrapper;
+import com.android.internal.view.IInputContext;
+import com.android.internal.view.IInputMethodClient;
+import com.android.internal.view.IInputMethodManager;
+import com.android.internal.view.IInputMethodSession;
+import com.android.internal.view.InputBindResult;
+import com.android.internal.view.InputMethodClient;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
-import java.security.InvalidParameterException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -70,14 +70,12 @@
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
-
 /**
  * Central system API to the overall input method framework (IMF) architecture,
  * which arbitrates interaction between applications and the current input method.
  * You can retrieve an instance of this interface with
  * {@link Context#getSystemService(String) Context.getSystemService()}.
- * 
+ *
  * <p>Topics covered here:
  * <ol>
  * <li><a href="#ArchitectureOverview">Architecture Overview</a>
@@ -85,13 +83,13 @@
  * <li><a href="#InputMethods">Input Methods</a>
  * <li><a href="#Security">Security</a>
  * </ol>
- * 
+ *
  * <a name="ArchitectureOverview"></a>
  * <h3>Architecture Overview</h3>
- * 
+ *
  * <p>There are three primary parties involved in the input method
  * framework (IMF) architecture:</p>
- * 
+ *
  * <ul>
  * <li> The <strong>input method manager</strong> as expressed by this class
  * is the central point of the system that manages interaction between all
@@ -106,16 +104,16 @@
  * method manager for input focus and control over the state of the IME.  Only
  * one such client is ever active (working with the IME) at a time.
  * </ul>
- * 
- * 
+ *
+ *
  * <a name="Applications"></a>
  * <h3>Applications</h3>
- * 
+ *
  * <p>In most cases, applications that are using the standard
  * {@link android.widget.TextView} or its subclasses will have little they need
  * to do to work well with soft input methods.  The main things you need to
  * be aware of are:</p>
- * 
+ *
  * <ul>
  * <li> Properly set the {@link android.R.attr#inputType} in your editable
  * text views, so that the input method will have enough context to help the
@@ -131,43 +129,43 @@
  * for your window using the same {@link android.R.attr#windowSoftInputMode}
  * attribute.
  * </ul>
- * 
+ *
  * <p>More finer-grained control is available through the APIs here to directly
  * interact with the IMF and its IME -- either showing or hiding the input
  * area, letting the user pick an input method, etc.</p>
- * 
+ *
  * <p>For the rare people amongst us writing their own text editors, you
  * will need to implement {@link android.view.View#onCreateInputConnection}
  * to return a new instance of your own {@link InputConnection} interface
  * allowing the IME to interact with your editor.</p>
- * 
- * 
+ *
+ *
  * <a name="InputMethods"></a>
  * <h3>Input Methods</h3>
- * 
+ *
  * <p>An input method (IME) is implemented
  * as a {@link android.app.Service}, typically deriving from
  * {@link android.inputmethodservice.InputMethodService}.  It must provide
  * the core {@link InputMethod} interface, though this is normally handled by
  * {@link android.inputmethodservice.InputMethodService} and implementors will
  * only need to deal with the higher-level API there.</p>
- * 
+ *
  * See the {@link android.inputmethodservice.InputMethodService} class for
  * more information on implementing IMEs.
- * 
- * 
+ *
+ *
  * <a name="Security"></a>
  * <h3>Security</h3>
- * 
+ *
  * <p>There are a lot of security issues associated with input methods,
  * since they essentially have freedom to completely drive the UI and monitor
  * everything the user enters.  The Android input method framework also allows
  * arbitrary third party IMEs, so care must be taken to restrict their
  * selection and interactions.</p>
- * 
+ *
  * <p>Here are some key points about the security architecture behind the
  * IMF:</p>
- * 
+ *
  * <ul>
  * <li> <p>Only the system is allowed to directly access an IME's
  * {@link InputMethod} interface, via the
@@ -175,11 +173,11 @@
  * enforced in the system by not binding to an input method service that does
  * not require this permission, so the system can guarantee no other untrusted
  * clients are accessing the current input method outside of its control.</p>
- * 
+ *
  * <li> <p>There may be many client processes of the IMF, but only one may
  * be active at a time.  The inactive clients can not interact with key
  * parts of the IMF through the mechanisms described below.</p>
- * 
+ *
  * <li> <p>Clients of an input method are only given access to its
  * {@link InputMethodSession} interface.  One instance of this interface is
  * created for each client, and only calls from the session associated with
@@ -187,19 +185,19 @@
  * by {@link android.inputmethodservice.AbstractInputMethodService} for normal
  * IMEs, but must be explicitly handled by an IME that is customizing the
  * raw {@link InputMethodSession} implementation.</p>
- * 
+ *
  * <li> <p>Only the active client's {@link InputConnection} will accept
  * operations.  The IMF tells each client process whether it is active, and
  * the framework enforces that in inactive processes calls on to the current
  * InputConnection will be ignored.  This ensures that the current IME can
  * only deliver events and text edits to the UI that the user sees as
  * being in focus.</p>
- * 
+ *
  * <li> <p>An IME can never interact with an {@link InputConnection} while
  * the screen is off.  This is enforced by making all clients inactive while
  * the screen is off, and prevents bad IMEs from driving the UI when the user
  * can not be aware of its behavior.</p>
- * 
+ *
  * <li> <p>A client application can ask that the system let the user pick a
  * new IME, but can not programmatically switch to one itself.  This avoids
  * malicious applications from switching the user to their own IME, which
@@ -207,7 +205,7 @@
  * IME, on the other hand, <em>is</em> allowed to programmatically switch
  * the system to another IME, since it already has full control of user
  * input.</p>
- * 
+ *
  * <li> <p>The user must explicitly enable a new IME in settings before
  * they can switch to it, to confirm with the system that they know about it
  * and want to make it available for use.</p>
@@ -268,11 +266,11 @@
 
     final IInputMethodManager mService;
     final Looper mMainLooper;
-    
+
     // For scheduling work on the main thread.  This also serves as our
     // global lock.
     final H mH;
-    
+
     // Our generic input connection if the current target does not have its own.
     final IInputContext mIInputContext;
 
@@ -280,20 +278,20 @@
      * True if this input method client is active, initially false.
      */
     boolean mActive = false;
-    
+
     /**
      * Set whenever this client becomes inactive, to know we need to reset
      * state with the IME the next time we receive focus.
      */
     boolean mHasBeenInactive = true;
-    
+
     /**
      * As reported by IME through InputConnection.
      */
     boolean mFullscreenMode;
-    
+
     // -----------------------------------------------------------
-    
+
     /**
      * This is the root view of the overall window that currently has input
      * method focus.
@@ -328,7 +326,7 @@
      * The completions that were last provided by the served view.
      */
     CompletionInfo[] mCompletions;
-    
+
     // Cursor position on the screen.
     Rect mTmpCursorRect = new Rect();
     Rect mCursorRect = new Rect();
@@ -389,7 +387,7 @@
     final SparseArray<PendingEvent> mPendingEvents = new SparseArray<>(20);
 
     // -----------------------------------------------------------
-    
+
     static final int MSG_DUMP = 1;
     static final int MSG_BIND = 2;
     static final int MSG_UNBIND = 3;
@@ -403,7 +401,7 @@
         H(Looper looper) {
             super(looper, null, true);
         }
-        
+
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {
@@ -654,7 +652,7 @@
             return sInstance;
         }
     }
-    
+
     /**
      * Private optimization: retrieve the global InputMethodManager instance,
      * if it exists.
@@ -663,17 +661,17 @@
     public static InputMethodManager peekInstance() {
         return sInstance;
     }
-    
+
     /** @hide */
     public IInputMethodClient getClient() {
         return mClient;
     }
-    
+
     /** @hide */
     public IInputContext getInputContext() {
         return mIInputContext;
     }
-    
+
     public List<InputMethodInfo> getInputMethodList() {
         try {
             return mService.getInputMethodList();
@@ -784,7 +782,7 @@
                     && mCurrentTextBoxAttribute != null;
         }
     }
-    
+
     /**
      * Return true if any view is currently active in the input method.
      */
@@ -794,7 +792,7 @@
             return mServedView != null && mCurrentTextBoxAttribute != null;
         }
     }
-    
+
     /**
      * Return true if the currently served view is accepting full text edits.
      * If false, it has no input connection, so can only handle raw key events.
@@ -871,7 +869,7 @@
                             || !mServedView.checkInputConnectionProxy(view))) {
                 return;
             }
-            
+
             mCompletions = completions;
             if (mCurMethod != null) {
                 try {
@@ -881,7 +879,7 @@
             }
         }
     }
-    
+
     public void updateExtractedText(View view, int token, ExtractedText text) {
         checkFocus();
         synchronized (mH) {
@@ -889,7 +887,7 @@
                     || !mServedView.checkInputConnectionProxy(view))) {
                 return;
             }
-            
+
             if (mCurMethod != null) {
                 try {
                     mCurMethod.updateExtractedText(token, text);
@@ -898,26 +896,26 @@
             }
         }
     }
-    
+
     /**
      * Flag for {@link #showSoftInput} to indicate that this is an implicit
      * request to show the input window, not as the result of a direct request
      * by the user.  The window may not be shown in this case.
      */
     public static final int SHOW_IMPLICIT = 0x0001;
-    
+
     /**
      * Flag for {@link #showSoftInput} to indicate that the user has forced
      * the input method open (such as by long-pressing menu) so it should
      * not be closed until they explicitly do so.
      */
     public static final int SHOW_FORCED = 0x0002;
-    
+
     /**
      * Synonym for {@link #showSoftInput(View, int, ResultReceiver)} without
      * a result receiver: explicitly request that the current input method's
      * soft input area be shown to the user, if needed.
-     * 
+     *
      * @param view The currently focused view, which would like to receive
      * soft keyboard input.
      * @param flags Provides additional operating flags.  Currently may be
@@ -926,7 +924,7 @@
     public boolean showSoftInput(View view, int flags) {
         return showSoftInput(view, flags, null);
     }
-    
+
     /**
      * Flag for the {@link ResultReceiver} result code from
      * {@link #showSoftInput(View, int, ResultReceiver)} and
@@ -934,7 +932,7 @@
      * state of the soft input window was unchanged and remains shown.
      */
     public static final int RESULT_UNCHANGED_SHOWN = 0;
-    
+
     /**
      * Flag for the {@link ResultReceiver} result code from
      * {@link #showSoftInput(View, int, ResultReceiver)} and
@@ -942,7 +940,7 @@
      * state of the soft input window was unchanged and remains hidden.
      */
     public static final int RESULT_UNCHANGED_HIDDEN = 1;
-    
+
     /**
      * Flag for the {@link ResultReceiver} result code from
      * {@link #showSoftInput(View, int, ResultReceiver)} and
@@ -950,7 +948,7 @@
      * state of the soft input window changed from hidden to shown.
      */
     public static final int RESULT_SHOWN = 2;
-    
+
     /**
      * Flag for the {@link ResultReceiver} result code from
      * {@link #showSoftInput(View, int, ResultReceiver)} and
@@ -958,7 +956,7 @@
      * state of the soft input window changed from shown to hidden.
      */
     public static final int RESULT_HIDDEN = 3;
-    
+
     /**
      * Explicitly request that the current input method's soft input area be
      * shown to the user, if needed.  Call this if the user interacts with
@@ -1000,7 +998,7 @@
             }
         }
     }
-    
+
     /** @hide */
     public void showSoftInputUnchecked(int flags, ResultReceiver resultReceiver) {
         try {
@@ -1009,14 +1007,14 @@
             throw e.rethrowFromSystemServer();
         }
     }
-    
+
     /**
      * Flag for {@link #hideSoftInputFromWindow} to indicate that the soft
      * input window should only be hidden if it was not explicitly shown
      * by the user.
      */
     public static final int HIDE_IMPLICIT_ONLY = 0x0001;
-    
+
     /**
      * Flag for {@link #hideSoftInputFromWindow} to indicate that the soft
      * input window should normally be hidden, unless it was originally
@@ -1028,7 +1026,7 @@
      * Synonym for {@link #hideSoftInputFromWindow(IBinder, int, ResultReceiver)}
      * without a result: request to hide the soft input window from the
      * context of the window that is currently accepting input.
-     * 
+     *
      * @param windowToken The token of the window that is making the request,
      * as returned by {@link View#getWindowToken() View.getWindowToken()}.
      * @param flags Provides additional operating flags.  Currently may be
@@ -1037,7 +1035,7 @@
     public boolean hideSoftInputFromWindow(IBinder windowToken, int flags) {
         return hideSoftInputFromWindow(windowToken, flags, null);
     }
-    
+
     /**
      * Request to hide the soft input window from the context of the window
      * that is currently accepting input.  This should be called as a result
@@ -1079,11 +1077,11 @@
             }
         }
     }
-    
+
 
     /**
      * This method toggles the input method window display.
-     * If the input window is already displayed, it gets hidden. 
+     * If the input window is already displayed, it gets hidden.
      * If not the input window will be displayed.
      * @param windowToken The token of the window that is making the request,
      * as returned by {@link View#getWindowToken() View.getWindowToken()}.
@@ -1110,7 +1108,7 @@
 
     /*
      * This method toggles the input method window display.
-     * If the input window is already displayed, it gets hidden. 
+     * If the input window is already displayed, it gets hidden.
      * If not the input window will be displayed.
      * @param showFlags Provides additional operating flags.  May be
      * 0 or have the {@link #SHOW_IMPLICIT},
@@ -1134,7 +1132,7 @@
      * restart it with its new contents.  You should call this when the text
      * within your view changes outside of the normal input method or key
      * input flow, such as when an application calls TextView.setText().
-     * 
+     *
      * @param view The view whose text has changed.
      */
     public void restartInput(View view) {
@@ -1144,7 +1142,7 @@
                     || !mServedView.checkInputConnectionProxy(view))) {
                 return;
             }
-            
+
             mServedConnecting = true;
         }
 
@@ -1196,7 +1194,7 @@
             });
             return false;
         }
-        
+
         // Okay we are now ready to call into the served view and have it
         // do its stuff.
         // Life is good: let's hook everything up!
@@ -1465,7 +1463,7 @@
 
         return true;
     }
-    
+
     void closeCurrentInput() {
         try {
             mService.hideSoftInput(mClient, HIDE_NOT_ALWAYS, null);
@@ -1504,7 +1502,7 @@
         if (first) {
             controlFlags |= CONTROL_WINDOW_FIRST;
         }
-        
+
         if (checkFocusNoStartInput(forceNewFocus)) {
             // We need to restart input on the current focus view.  This
             // should be done in conjunction with telling the system service
@@ -1792,7 +1790,7 @@
      * Close/hide the input method's soft input area, so the user no longer
      * sees it or can interact with it.  This can only be called
      * from the currently active input method, as validated by the given token.
-     * 
+     *
      * @param token Supplies the identifying token given to an input method
      * when it was started, which allows it to perform this operation on
      * itself.
@@ -1807,13 +1805,13 @@
             throw e.rethrowFromSystemServer();
         }
     }
-    
+
     /**
-     * Show the input method's soft input area, so the user 
+     * Show the input method's soft input area, so the user
      * sees the input method window and can interact with it.
      * This can only be called from the currently active input method,
      * as validated by the given token.
-     * 
+     *
      * @param token Supplies the identifying token given to an input method
      * when it was started, which allows it to perform this operation on
      * itself.
@@ -2335,7 +2333,7 @@
     void doDump(FileDescriptor fd, PrintWriter fout, String[] args) {
         final Printer p = new PrintWriterPrinter(fout);
         p.println("Input method client state for " + this + ":");
-        
+
         p.println("  mService=" + mService);
         p.println("  mMainLooper=" + mMainLooper);
         p.println("  mIInputContext=" + mIInputContext);
diff --git a/core/java/android/view/textservice/SpellCheckerInfo.java b/core/java/android/view/textservice/SpellCheckerInfo.java
index fc17f7a..7aa2c23 100644
--- a/core/java/android/view/textservice/SpellCheckerInfo.java
+++ b/core/java/android/view/textservice/SpellCheckerInfo.java
@@ -16,9 +16,6 @@
 
 package android.view.textservice;
 
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -35,6 +32,9 @@
 import android.util.Slog;
 import android.util.Xml;
 
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java
index e77dc0d..729eb8d 100644
--- a/core/java/android/view/textservice/SpellCheckerSession.java
+++ b/core/java/android/view/textservice/SpellCheckerSession.java
@@ -16,11 +16,6 @@
 
 package android.view.textservice;
 
-import com.android.internal.textservice.ISpellCheckerSession;
-import com.android.internal.textservice.ISpellCheckerSessionListener;
-import com.android.internal.textservice.ITextServicesManager;
-import com.android.internal.textservice.ITextServicesSessionListener;
-
 import android.os.Binder;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -29,6 +24,11 @@
 import android.os.RemoteException;
 import android.util.Log;
 
+import com.android.internal.textservice.ISpellCheckerSession;
+import com.android.internal.textservice.ISpellCheckerSessionListener;
+import com.android.internal.textservice.ITextServicesManager;
+import com.android.internal.textservice.ITextServicesSessionListener;
+
 import java.util.LinkedList;
 import java.util.Queue;
 
diff --git a/core/java/android/view/textservice/SpellCheckerSubtype.java b/core/java/android/view/textservice/SpellCheckerSubtype.java
index 8dff0c6..026610e 100644
--- a/core/java/android/view/textservice/SpellCheckerSubtype.java
+++ b/core/java/android/view/textservice/SpellCheckerSubtype.java
@@ -16,8 +16,6 @@
 
 package android.view.textservice;
 
-import com.android.internal.inputmethod.InputMethodUtils;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
@@ -27,6 +25,8 @@
 import android.text.TextUtils;
 import android.util.Slog;
 
+import com.android.internal.inputmethod.InputMethodUtils;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
diff --git a/core/java/android/view/textservice/SuggestionsInfo.java b/core/java/android/view/textservice/SuggestionsInfo.java
index 78bc1a9..dc2051c 100644
--- a/core/java/android/view/textservice/SuggestionsInfo.java
+++ b/core/java/android/view/textservice/SuggestionsInfo.java
@@ -16,11 +16,11 @@
 
 package android.view.textservice;
 
-import com.android.internal.util.ArrayUtils;
-
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.android.internal.util.ArrayUtils;
+
 /**
  * This class contains a metadata of suggestions from the text service
  */
diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java
index 01a95a4..5d136dc 100644
--- a/core/java/android/widget/AbsSeekBar.java
+++ b/core/java/android/widget/AbsSeekBar.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
@@ -36,6 +34,8 @@
 import android.view.ViewConfiguration;
 import android.view.accessibility.AccessibilityNodeInfo;
 
+import com.android.internal.R;
+
 
 /**
  * AbsSeekBar extends the capabilities of ProgressBar by adding a draggable thumb.
@@ -469,7 +469,7 @@
     /**
      * Returns the amount of progress changed via the arrow keys.
      * <p>
-     * By default, this will be a value that is derived from the max progress.
+     * By default, this will be a value that is derived from the progress range.
      *
      * @return The amount to increment or decrement when the user presses the
      *         arrow keys. This will be positive.
@@ -479,13 +479,27 @@
     }
 
     @Override
-    public synchronized void setMax(int max) {
-        super.setMax(max);
+    public synchronized void setMin(int min) {
+        super.setMin(min);
+        int range = getMax() - getMin();
 
-        if ((mKeyProgressIncrement == 0) || (getMax() / mKeyProgressIncrement > 20)) {
+        if ((mKeyProgressIncrement == 0) || (range / mKeyProgressIncrement > 20)) {
+
             // It will take the user too long to change this via keys, change it
             // to something more reasonable
-            setKeyProgressIncrement(Math.max(1, Math.round((float) getMax() / 20)));
+            setKeyProgressIncrement(Math.max(1, Math.round((float) range / 20)));
+        }
+    }
+
+    @Override
+    public synchronized void setMax(int max) {
+        super.setMax(max);
+        int range = getMax() - getMin();
+
+        if ((mKeyProgressIncrement == 0) || (range / mKeyProgressIncrement > 20)) {
+            // It will take the user too long to change this via keys, change it
+            // to something more reasonable
+            setKeyProgressIncrement(Math.max(1, Math.round((float) range / 20)));
         }
     }
 
@@ -596,8 +610,10 @@
     }
 
     private float getScale() {
-        final int max = getMax();
-        return max > 0 ? getProgress() / (float) max : 0;
+        int min = getMin();
+        int max = getMax();
+        int range = max - min;
+        return range > 0 ? (getProgress() - min) / (float) range : 0;
     }
 
     /**
@@ -691,7 +707,7 @@
      */
     void drawTickMarks(Canvas canvas) {
         if (mTickMark != null) {
-            final int count = getMax();
+            final int count = getMax() - getMin();
             if (count > 1) {
                 final int w = mTickMark.getIntrinsicWidth();
                 final int h = mTickMark.getIntrinsicHeight();
@@ -847,8 +863,8 @@
             }
         }
 
-        final int max = getMax();
-        progress += scale * max;
+        final int range = getMax() - getMin();
+        progress += scale * range;
 
         setHotspot(x, y);
         setProgressInternal(Math.round(progress), true, false);
@@ -922,7 +938,7 @@
 
         if (isEnabled()) {
             final int progress = getProgress();
-            if (progress > 0) {
+            if (progress > getMin()) {
                 info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD);
             }
             if (progress < getMax()) {
@@ -960,7 +976,8 @@
                 if (!canUserSetProgress()) {
                     return false;
                 }
-                int increment = Math.max(1, Math.round((float) getMax() / 20));
+                int range = getMax() - getMin();
+                int increment = Math.max(1, Math.round((float) range / 20));
                 if (action == AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD) {
                     increment = -increment;
                 }
diff --git a/core/java/android/widget/AbsSpinner.java b/core/java/android/widget/AbsSpinner.java
index 18db54e..bc3dfff 100644
--- a/core/java/android/widget/AbsSpinner.java
+++ b/core/java/android/widget/AbsSpinner.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.database.DataSetObserver;
@@ -29,10 +27,12 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.R;
+
 /**
  * An abstract base class for spinner widgets. SDK users will probably not
  * need to use this class.
- * 
+ *
  * @attr ref android.R.styleable#AbsSpinner_entries
  */
 public abstract class AbsSpinner extends AdapterView<SpinnerAdapter> {
@@ -104,12 +104,12 @@
             mAdapter.unregisterDataSetObserver(mDataSetObserver);
             resetList();
         }
-        
+
         mAdapter = adapter;
-        
+
         mOldSelectedPosition = INVALID_POSITION;
         mOldSelectedRowId = INVALID_ROW_ID;
-        
+
         if (mAdapter != null) {
             mOldItemCount = mItemCount;
             mItemCount = mAdapter.getCount();
@@ -122,14 +122,14 @@
 
             setSelectedPositionInt(position);
             setNextSelectedPositionInt(position);
-            
+
             if (mItemCount == 0) {
                 // Nothing selected
                 checkSelectionChanged();
             }
-            
+
         } else {
-            checkFocus();            
+            checkFocus();
             resetList();
             // Nothing selected
             checkSelectionChanged();
@@ -144,23 +144,23 @@
     void resetList() {
         mDataChanged = false;
         mNeedSync = false;
-        
+
         removeAllViewsInLayout();
         mOldSelectedPosition = INVALID_POSITION;
         mOldSelectedRowId = INVALID_ROW_ID;
-        
+
         setSelectedPositionInt(INVALID_POSITION);
         setNextSelectedPositionInt(INVALID_POSITION);
         invalidate();
     }
 
-    /** 
+    /**
      * @see android.view.View#measure(int, int)
-     * 
+     *
      * Figure out the dimensions of this Spinner. The width comes from
      * the widthMeasureSpec as Spinnners can't have their width set to
      * UNSPECIFIED. The height is based on the height of the selected item
-     * plus padding. 
+     * plus padding.
      */
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
@@ -180,11 +180,11 @@
         if (mDataChanged) {
             handleDataChanged();
         }
-        
+
         int preferredHeight = 0;
         int preferredWidth = 0;
         boolean needsMeasuring = true;
-        
+
         int selectedPosition = getSelectedItemPosition();
         if (selectedPosition >= 0 && mAdapter != null && selectedPosition < mAdapter.getCount()) {
             // Try looking in the recycler. (Maybe we were measured once already)
@@ -208,14 +208,14 @@
                     mBlockLayoutRequests = false;
                 }
                 measureChild(view, widthMeasureSpec, heightMeasureSpec);
-                
+
                 preferredHeight = getChildHeight(view) + mSpinnerPadding.top + mSpinnerPadding.bottom;
                 preferredWidth = getChildWidth(view) + mSpinnerPadding.left + mSpinnerPadding.right;
-                
+
                 needsMeasuring = false;
             }
         }
-        
+
         if (needsMeasuring) {
             // No views -- just use padding
             preferredHeight = mSpinnerPadding.top + mSpinnerPadding.bottom;
@@ -238,18 +238,18 @@
     int getChildHeight(View child) {
         return child.getMeasuredHeight();
     }
-    
+
     int getChildWidth(View child) {
         return child.getMeasuredWidth();
     }
-    
+
     @Override
     protected ViewGroup.LayoutParams generateDefaultLayoutParams() {
         return new ViewGroup.LayoutParams(
                 ViewGroup.LayoutParams.MATCH_PARENT,
                 ViewGroup.LayoutParams.WRAP_CONTENT);
     }
-    
+
     void recycleAllViews() {
         final int childCount = getChildCount();
         final AbsSpinner.RecycleBin recycleBin = mRecycler;
@@ -260,7 +260,7 @@
             View v = getChildAt(i);
             int index = position + i;
             recycleBin.put(index, v);
-        }  
+        }
     }
 
     /**
@@ -279,14 +279,14 @@
         requestLayout();
         invalidate();
     }
-    
+
 
     /**
      * Makes the item at the supplied position selected.
-     * 
+     *
      * @param position Position to select
      * @param animate Should the transition be animated
-     * 
+     *
      */
     void setSelectionInt(int position, boolean animate) {
         if (position != mOldSelectedPosition) {
@@ -308,11 +308,11 @@
             return null;
         }
     }
-   
+
     /**
      * Override to prevent spamming ourselves with layout requests
      * as we place views
-     * 
+     *
      * @see android.view.View#requestLayout()
      */
     @Override
@@ -334,7 +334,7 @@
 
     /**
      * Maps a point to a position in the list.
-     * 
+     *
      * @param x X in local coordinate
      * @param y Y in local coordinate
      * @return The position of the item which contains the specified point, or
@@ -378,7 +378,7 @@
         SavedState(Parcelable superState) {
             super(superState);
         }
-        
+
         /**
          * Constructor called from {@link #CREATOR}
          */
@@ -431,7 +431,7 @@
     @Override
     public void onRestoreInstanceState(Parcelable state) {
         SavedState ss = (SavedState) state;
-  
+
         super.onRestoreInstanceState(ss.getSuperState());
 
         if (ss.selectedId >= 0) {
@@ -450,7 +450,7 @@
         public void put(int position, View v) {
             mScrapHeap.put(position, v);
         }
-        
+
         View get(int position) {
             // System.out.print("Looking for " + position);
             View result = mScrapHeap.get(position);
diff --git a/core/java/android/widget/ActionMenuPresenter.java b/core/java/android/widget/ActionMenuPresenter.java
index ac8d578..46269c6 100644
--- a/core/java/android/widget/ActionMenuPresenter.java
+++ b/core/java/android/widget/ActionMenuPresenter.java
@@ -39,6 +39,7 @@
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
 import android.view.accessibility.AccessibilityNodeInfo;
+
 import com.android.internal.view.ActionBarPolicy;
 import com.android.internal.view.menu.ActionMenuItemView;
 import com.android.internal.view.menu.BaseMenuPresenter;
diff --git a/core/java/android/widget/ActionMenuView.java b/core/java/android/widget/ActionMenuView.java
index 4d0a1c8..c4bbdb0 100644
--- a/core/java/android/widget/ActionMenuView.java
+++ b/core/java/android/widget/ActionMenuView.java
@@ -31,6 +31,7 @@
 import android.view.ViewGroup;
 import android.view.ViewHierarchyEncoder;
 import android.view.accessibility.AccessibilityEvent;
+
 import com.android.internal.view.menu.ActionMenuItemView;
 import com.android.internal.view.menu.MenuBuilder;
 import com.android.internal.view.menu.MenuItemImpl;
@@ -45,7 +46,7 @@
  */
 public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvoker, MenuView {
     private static final String TAG = "ActionMenuView";
-    
+
     static final int MIN_CELL_SIZE = 56; // dips
     static final int GENERATED_ITEM_PADDING = 4; // dips
 
@@ -71,7 +72,7 @@
     public ActionMenuView(Context context) {
         this(context, null);
     }
-    
+
     public ActionMenuView(Context context, AttributeSet attrs) {
         super(context, attrs);
         setBaselineAligned(false);
@@ -579,7 +580,7 @@
         params.gravity = Gravity.CENTER_VERTICAL;
         return params;
     }
-    
+
     @Override
     public LayoutParams generateLayoutParams(AttributeSet attrs) {
         return new LayoutParams(getContext(), attrs);
diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java
index f5c46db..51587a7 100644
--- a/core/java/android/widget/ActivityChooserView.java
+++ b/core/java/android/widget/ActivityChooserView.java
@@ -16,9 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-import com.android.internal.view.menu.ShowableListMenu;
-
 import android.annotation.StringRes;
 import android.content.Context;
 import android.content.Intent;
@@ -39,6 +36,9 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.ActivityChooserModel.ActivityChooserModelClient;
 
+import com.android.internal.R;
+import com.android.internal.view.menu.ShowableListMenu;
+
 /**
  * This class is a view for choosing an activity for handling a given {@link Intent}.
  * <p>
diff --git a/core/java/android/widget/AnalogClock.java b/core/java/android/widget/AnalogClock.java
index 7f5e2133..bde5f7f 100644
--- a/core/java/android/widget/AnalogClock.java
+++ b/core/java/android/widget/AnalogClock.java
@@ -16,15 +16,14 @@
 
 package android.widget;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.BroadcastReceiver;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
-import android.os.Handler;
 import android.text.format.DateUtils;
 import android.text.format.Time;
 import android.util.AttributeSet;
@@ -258,7 +257,7 @@
             }
 
             onTimeChanged();
-            
+
             invalidate();
         }
     };
diff --git a/core/java/android/widget/AppSecurityPermissions.java b/core/java/android/widget/AppSecurityPermissions.java
index 1a1680a..68e6809 100644
--- a/core/java/android/widget/AppSecurityPermissions.java
+++ b/core/java/android/widget/AppSecurityPermissions.java
@@ -16,10 +16,6 @@
 */
 package android.widget;
 
-import android.annotation.SystemApi;
-import android.os.UserHandle;
-import com.android.internal.R;
-
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -31,6 +27,7 @@
 import android.content.pm.PermissionInfo;
 import android.graphics.drawable.Drawable;
 import android.os.Parcel;
+import android.os.UserHandle;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -39,6 +36,8 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.R;
+
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -57,7 +56,7 @@
  * extended information consisting of all groups and permissions.
  * To use this view define a LinearLayout or any ViewGroup and add this
  * view by instantiating AppSecurityPermissions and invoking getPermissionsView.
- * 
+ *
  * {@hide}
  */
 public class AppSecurityPermissions {
@@ -324,7 +323,7 @@
         return getPermissionItemViewOld(context, inflater, grpName,
                 description, dangerous, icon);
     }
-    
+
     private void getAllUsedPermissions(int sharedUid, Set<MyPermissionInfo> permSet) {
         String sharedPkgList[] = mPm.getPackagesForUid(sharedUid);
         if(sharedPkgList == null || (sharedPkgList.length == 0)) {
@@ -334,7 +333,7 @@
             getPermissionsForPackage(sharedPkg, permSet);
         }
     }
-    
+
     private void getPermissionsForPackage(String packageName, Set<MyPermissionInfo> permSet) {
         try {
             PackageInfo pkgInfo = mPm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
@@ -417,7 +416,7 @@
             }
         }
     }
-    
+
     public int getPermissionCount() {
         return getPermissionCount(WHICH_ALL);
     }
@@ -570,7 +569,7 @@
         }
         return false;
     }
-    
+
     private static class PermissionGroupInfoComparator implements Comparator<MyPermissionGroupInfo> {
         private final Collator sCollator = Collator.getInstance();
         @Override
@@ -578,7 +577,7 @@
             return sCollator.compare(a.mLabel, b.mLabel);
         }
     }
-    
+
     private static class PermissionInfoComparator implements Comparator<MyPermissionInfo> {
         private final Collator sCollator = Collator.getInstance();
         PermissionInfoComparator() {
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java
index 6a4e36a..49741d4 100644
--- a/core/java/android/widget/AutoCompleteTextView.java
+++ b/core/java/android/widget/AutoCompleteTextView.java
@@ -39,7 +39,9 @@
 import android.view.inputmethod.CompletionInfo;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
+
 import com.android.internal.R;
+
 import java.lang.ref.WeakReference;
 
 /**
@@ -362,22 +364,22 @@
      * <p>Returns the current width for the auto-complete drop down list. This can
      * be a fixed width, or {@link ViewGroup.LayoutParams#MATCH_PARENT} to fill the screen, or
      * {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the width of its anchor view.</p>
-     * 
+     *
      * @return the width for the drop down list
-     * 
+     *
      * @attr ref android.R.styleable#AutoCompleteTextView_dropDownWidth
      */
     public int getDropDownWidth() {
         return mPopup.getWidth();
     }
-    
+
     /**
      * <p>Sets the current width for the auto-complete drop down list. This can
      * be a fixed width, or {@link ViewGroup.LayoutParams#MATCH_PARENT} to fill the screen, or
      * {@link ViewGroup.LayoutParams#WRAP_CONTENT} to fit the width of its anchor view.</p>
-     * 
+     *
      * @param width the width to use
-     * 
+     *
      * @attr ref android.R.styleable#AutoCompleteTextView_dropDownWidth
      */
     public void setDropDownWidth(int width) {
@@ -411,68 +413,68 @@
     public void setDropDownHeight(int height) {
         mPopup.setHeight(height);
     }
-    
+
     /**
      * <p>Returns the id for the view that the auto-complete drop down list is anchored to.</p>
-     *  
+     *
      * @return the view's id, or {@link View#NO_ID} if none specified
-     * 
+     *
      * @attr ref android.R.styleable#AutoCompleteTextView_dropDownAnchor
      */
     public int getDropDownAnchor() {
         return mDropDownAnchorId;
     }
-    
+
     /**
      * <p>Sets the view to which the auto-complete drop down list should anchor. The view
      * corresponding to this id will not be loaded until the next time it is needed to avoid
      * loading a view which is not yet instantiated.</p>
-     * 
+     *
      * @param id the id to anchor the drop down list view to
-     * 
-     * @attr ref android.R.styleable#AutoCompleteTextView_dropDownAnchor 
+     *
+     * @attr ref android.R.styleable#AutoCompleteTextView_dropDownAnchor
      */
     public void setDropDownAnchor(int id) {
         mDropDownAnchorId = id;
         mPopup.setAnchorView(null);
     }
-    
+
     /**
      * <p>Gets the background of the auto-complete drop-down list.</p>
-     * 
+     *
      * @return the background drawable
-     * 
+     *
      * @attr ref android.R.styleable#PopupWindow_popupBackground
      */
     public Drawable getDropDownBackground() {
         return mPopup.getBackground();
     }
-    
+
     /**
      * <p>Sets the background of the auto-complete drop-down list.</p>
-     * 
+     *
      * @param d the drawable to set as the background
-     * 
+     *
      * @attr ref android.R.styleable#PopupWindow_popupBackground
      */
     public void setDropDownBackgroundDrawable(Drawable d) {
         mPopup.setBackgroundDrawable(d);
     }
-    
+
     /**
      * <p>Sets the background of the auto-complete drop-down list.</p>
-     * 
+     *
      * @param id the id of the drawable to set as the background
-     * 
+     *
      * @attr ref android.R.styleable#PopupWindow_popupBackground
      */
     public void setDropDownBackgroundResource(@DrawableRes int id) {
         mPopup.setBackgroundDrawable(getContext().getDrawable(id));
     }
-    
+
     /**
      * <p>Sets the vertical offset used for the auto-complete drop-down list.</p>
-     * 
+     *
      * @param offset the vertical offset
      *
      * @attr ref android.R.styleable#ListPopupWindow_dropDownVerticalOffset
@@ -480,10 +482,10 @@
     public void setDropDownVerticalOffset(int offset) {
         mPopup.setVerticalOffset(offset);
     }
-    
+
     /**
      * <p>Gets the vertical offset used for the auto-complete drop-down list.</p>
-     * 
+     *
      * @return the vertical offset
      *
      * @attr ref android.R.styleable#ListPopupWindow_dropDownVerticalOffset
@@ -491,10 +493,10 @@
     public int getDropDownVerticalOffset() {
         return mPopup.getVerticalOffset();
     }
-    
+
     /**
      * <p>Sets the horizontal offset used for the auto-complete drop-down list.</p>
-     * 
+     *
      * @param offset the horizontal offset
      *
      * @attr ref android.R.styleable#ListPopupWindow_dropDownHorizontalOffset
@@ -502,10 +504,10 @@
     public void setDropDownHorizontalOffset(int offset) {
         mPopup.setHorizontalOffset(offset);
     }
-    
+
     /**
      * <p>Gets the horizontal offset used for the auto-complete drop-down list.</p>
-     * 
+     *
      * @return the horizontal offset
      *
      * @attr ref android.R.styleable#ListPopupWindow_dropDownHorizontalOffset
@@ -567,10 +569,10 @@
     public void setDropDownAlwaysVisible(boolean dropDownAlwaysVisible) {
         mPopup.setDropDownAlwaysVisible(dropDownAlwaysVisible);
     }
-   
+
     /**
      * Checks whether the drop-down is dismissed when a suggestion is clicked.
-     * 
+     *
      * @hide Pending API council approval
      */
     public boolean isDropDownDismissedOnCompletion() {
@@ -578,17 +580,17 @@
     }
 
     /**
-     * Sets whether the drop-down is dismissed when a suggestion is clicked. This is 
+     * Sets whether the drop-down is dismissed when a suggestion is clicked. This is
      * true by default.
-     * 
+     *
      * @param dropDownDismissedOnCompletion Whether to dismiss the drop-down.
-     * 
+     *
      * @hide Pending API council approval
      */
     public void setDropDownDismissedOnCompletion(boolean dropDownDismissedOnCompletion) {
         mDropDownDismissedOnCompletion = dropDownDismissedOnCompletion;
     }
- 
+
     /**
      * <p>Returns the number of characters the user must type before the drop
      * down list is shown.</p>
@@ -720,13 +722,13 @@
     /**
      * <p>Changes the list of data used for auto completion. The provided list
      * must be a filterable list adapter.</p>
-     * 
+     *
      * <p>The caller is still responsible for managing any resources used by the adapter.
      * Notably, when the AutoCompleteTextView is closed or released, the adapter is not notified.
      * A common case is the use of {@link android.widget.CursorAdapter}, which
      * contains a {@link android.database.Cursor} that must be closed.  This can be done
-     * automatically (see 
-     * {@link android.app.Activity#startManagingCursor(android.database.Cursor) 
+     * automatically (see
+     * {@link android.app.Activity#startManagingCursor(android.database.Cursor)
      * startManagingCursor()}),
      * or by manually closing the cursor when the AutoCompleteTextView is dismissed.</p>
      *
@@ -811,7 +813,7 @@
         if (mPopup.onKeyDown(keyCode, event)) {
             return true;
         }
-        
+
         if (!isPopupShowing()) {
             switch(keyCode) {
             case KeyEvent.KEYCODE_DPAD_DOWN:
@@ -924,18 +926,18 @@
     protected CharSequence convertSelectionToString(Object selectedItem) {
         return mFilter.convertResultToString(selectedItem);
     }
-    
+
     /**
-     * <p>Clear the list selection.  This may only be temporary, as user input will often bring 
+     * <p>Clear the list selection.  This may only be temporary, as user input will often bring
      * it back.
      */
     public void clearListSelection() {
         mPopup.clearListSelection();
     }
-    
+
     /**
      * Set the position of the dropdown view selection.
-     * 
+     *
      * @param position The position to move the selector to.
      */
     public void setListSelection(int position) {
@@ -943,13 +945,13 @@
     }
 
     /**
-     * Get the position of the dropdown view selection, if there is one.  Returns 
+     * Get the position of the dropdown view selection, if there is one.  Returns
      * {@link ListView#INVALID_POSITION ListView.INVALID_POSITION} if there is no dropdown or if
      * there is no selection.
-     * 
-     * @return the position of the current selection, if there is one, or 
+     *
+     * @return the position of the current selection, if there is one, or
      * {@link ListView#INVALID_POSITION ListView.INVALID_POSITION} if not.
-     * 
+     *
      * @see ListView#getSelectedItemPosition()
      */
     public int getListSelection() {
@@ -1020,7 +1022,7 @@
             dismissDropDown();
         }
     }
-    
+
     /**
      * Identifies whether the view is currently performing a text completion, so subclasses
      * can decide whether to respond to text changed events.
@@ -1172,7 +1174,7 @@
     public void showDropDownAfterLayout() {
         mPopup.postShow();
     }
-    
+
     /**
      * Ensures that the drop down is not obscuring the IME.
      * @param visible whether the ime should be in front. If false, the ime is pushed to
@@ -1220,7 +1222,7 @@
      * Forces outside touches to be ignored. Normally if {@link #isDropDownAlwaysVisible()} is
      * false, we allow outside touch to dismiss the dropdown. If this is set to true, then we
      * ignore outside touch even when the drop down is not set to always visible.
-     * 
+     *
      * @hide used only by SearchDialog
      */
     public void setForceIgnoreOutsideTouch(boolean forceIgnoreOutsideTouch) {
@@ -1245,7 +1247,7 @@
                         realCount++;
                     }
                 }
-                
+
                 if (realCount != count) {
                     CompletionInfo[] tmp = new CompletionInfo[realCount];
                     System.arraycopy(completions, 0, tmp, 0, realCount);
@@ -1340,7 +1342,7 @@
          */
         CharSequence fixText(CharSequence invalidText);
     }
-    
+
     /**
      * Listener to respond to the AutoCompleteTextView's completion list being dismissed.
      * @see AutoCompleteTextView#setOnDismissListener(OnDismissListener)
diff --git a/core/java/android/widget/CalendarView.java b/core/java/android/widget/CalendarView.java
index 6ef1576..db50e34 100644
--- a/core/java/android/widget/CalendarView.java
+++ b/core/java/android/widget/CalendarView.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.AttrRes;
 import android.annotation.ColorInt;
 import android.annotation.DrawableRes;
@@ -36,6 +34,8 @@
 import android.util.AttributeSet;
 import android.util.Log;
 
+import com.android.internal.R;
+
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
diff --git a/core/java/android/widget/CalendarViewLegacyDelegate.java b/core/java/android/widget/CalendarViewLegacyDelegate.java
index bcda83f..557d411 100644
--- a/core/java/android/widget/CalendarViewLegacyDelegate.java
+++ b/core/java/android/widget/CalendarViewLegacyDelegate.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.app.Service;
 import android.content.Context;
 import android.content.res.Configuration;
@@ -38,10 +36,12 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import java.util.Locale;
+import com.android.internal.R;
 
 import libcore.icu.LocaleData;
 
+import java.util.Locale;
+
 /**
  * A delegate implementing the legacy CalendarView
  */
diff --git a/core/java/android/widget/CheckBox.java b/core/java/android/widget/CheckBox.java
index 15bbdd2..046f75f 100644
--- a/core/java/android/widget/CheckBox.java
+++ b/core/java/android/widget/CheckBox.java
@@ -19,7 +19,6 @@
 import android.content.Context;
 import android.util.AttributeSet;
 
-
 /**
  * <p>
  * A checkbox is a specific type of two-states button that can be either
@@ -44,12 +43,12 @@
  *
  * <p>See the <a href="{@docRoot}guide/topics/ui/controls/checkbox.html">Checkboxes</a>
  * guide.</p>
- *  
- * <p><strong>XML attributes</strong></p> 
+ *
+ * <p><strong>XML attributes</strong></p>
  * <p>
- * See {@link android.R.styleable#CompoundButton CompoundButton Attributes}, 
- * {@link android.R.styleable#Button Button Attributes}, 
- * {@link android.R.styleable#TextView TextView Attributes}, 
+ * See {@link android.R.styleable#CompoundButton CompoundButton Attributes},
+ * {@link android.R.styleable#Button Button Attributes},
+ * {@link android.R.styleable#TextView TextView Attributes},
  * {@link android.R.styleable#View View Attributes}
  * </p>
  */
@@ -57,7 +56,7 @@
     public CheckBox(Context context) {
         this(context, null);
     }
-    
+
     public CheckBox(Context context, AttributeSet attrs) {
         this(context, attrs, com.android.internal.R.attr.checkboxStyle);
     }
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java
index 21595d15..92bfd56 100644
--- a/core/java/android/widget/CheckedTextView.java
+++ b/core/java/android/widget/CheckedTextView.java
@@ -16,11 +16,8 @@
 
 package android.widget;
 
-import android.annotation.NonNull;
-import android.view.ViewHierarchyEncoder;
-import com.android.internal.R;
-
 import android.annotation.DrawableRes;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
@@ -34,9 +31,12 @@
 import android.view.Gravity;
 import android.view.RemotableViewMethod;
 import android.view.ViewDebug;
+import android.view.ViewHierarchyEncoder;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 
+import com.android.internal.R;
+
 /**
  * An extension to {@link TextView} that supports the {@link Checkable}
  * interface and displays.
@@ -394,7 +394,7 @@
                     y = (getHeight() - height) / 2;
                     break;
             }
-            
+
             final boolean checkMarkAtStart = isCheckMarkAtStart();
             final int width = getWidth();
             final int top = y;
@@ -417,7 +417,7 @@
             }
         }
     }
-    
+
     @Override
     protected int[] onCreateDrawableState(int extraSpace) {
         final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
diff --git a/core/java/android/widget/Chronometer.java b/core/java/android/widget/Chronometer.java
index adcb012..b9224f3 100644
--- a/core/java/android/widget/Chronometer.java
+++ b/core/java/android/widget/Chronometer.java
@@ -24,7 +24,6 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
-import android.view.accessibility.AccessibilityEvent;
 import android.widget.RemoteViews.RemoteView;
 
 import com.android.internal.R;
@@ -80,7 +79,7 @@
     private OnChronometerTickListener mOnChronometerTickListener;
     private StringBuilder mRecycle = new StringBuilder(8);
     private boolean mCountDown;
-    
+
     /**
      * Initialize this Chronometer object.
      * Sets the base to the current time.
@@ -191,7 +190,7 @@
 
     /**
      * Sets the listener to be called when the chronometer changes.
-     * 
+     *
      * @param listener The listener.
      */
     public void setOnChronometerTickListener(OnChronometerTickListener listener) {
@@ -209,10 +208,10 @@
     /**
      * Start counting up.  This does not affect the base as set from {@link #setBase}, just
      * the view display.
-     * 
-     * Chronometer works by regularly scheduling messages to the handler, even when the 
-     * Widget is not visible.  To make sure resource leaks do not occur, the user should 
-     * make sure that each start() call has a reciprocal call to {@link #stop}. 
+     *
+     * Chronometer works by regularly scheduling messages to the handler, even when the
+     * Widget is not visible.  To make sure resource leaks do not occur, the user should
+     * make sure that each start() call has a reciprocal call to {@link #stop}.
      */
     public void start() {
         mStarted = true;
@@ -222,9 +221,9 @@
     /**
      * Stop counting up.  This does not affect the base as set from {@link #setBase}, just
      * the view display.
-     * 
+     *
      * This stops the messages to the handler, effectively releasing resources that would
-     * be held as the chronometer is running, via {@link #start}. 
+     * be held as the chronometer is running, via {@link #start}.
      */
     public void stop() {
         mStarted = false;
diff --git a/core/java/android/widget/CompoundButton.java b/core/java/android/widget/CompoundButton.java
index 0357834..dd63fef 100644
--- a/core/java/android/widget/CompoundButton.java
+++ b/core/java/android/widget/CompoundButton.java
@@ -19,14 +19,11 @@
 import android.annotation.DrawableRes;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.graphics.PorterDuff;
-import android.view.ViewHierarchyEncoder;
-import com.android.internal.R;
-
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
+import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -34,9 +31,12 @@
 import android.view.Gravity;
 import android.view.SoundEffectConstants;
 import android.view.ViewDebug;
+import android.view.ViewHierarchyEncoder;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 
+import com.android.internal.R;
+
 /**
  * <p>
  * A button with two states, checked and unchecked. When the button is pressed
@@ -159,7 +159,7 @@
                 mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked);
             }
 
-            mBroadcasting = false;            
+            mBroadcasting = false;
         }
     }
 
@@ -492,7 +492,7 @@
         SavedState(Parcelable superState) {
             super(superState);
         }
-        
+
         /**
          * Constructor called from {@link #CREATOR}
          */
diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java
index 80f25d4..517e20cd 100644
--- a/core/java/android/widget/DatePicker.java
+++ b/core/java/android/widget/DatePicker.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
@@ -35,6 +33,8 @@
 import android.view.View;
 import android.view.accessibility.AccessibilityEvent;
 
+import com.android.internal.R;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Locale;
diff --git a/core/java/android/widget/DatePickerCalendarDelegate.java b/core/java/android/widget/DatePickerCalendarDelegate.java
index 1bf0c87..f712685 100755
--- a/core/java/android/widget/DatePickerCalendarDelegate.java
+++ b/core/java/android/widget/DatePickerCalendarDelegate.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
@@ -40,6 +38,8 @@
 import android.widget.DayPickerView.OnDaySelectedListener;
 import android.widget.YearPickerView.OnYearSelectedListener;
 
+import com.android.internal.R;
+
 import java.util.Locale;
 
 /**
diff --git a/core/java/android/widget/DatePickerSpinnerDelegate.java b/core/java/android/widget/DatePickerSpinnerDelegate.java
index 9ecf8a5..702b2a5 100644
--- a/core/java/android/widget/DatePickerSpinnerDelegate.java
+++ b/core/java/android/widget/DatePickerSpinnerDelegate.java
@@ -33,14 +33,14 @@
 import android.widget.DatePicker.AbstractDatePickerDelegate;
 import android.widget.NumberPicker.OnValueChangeListener;
 
+import libcore.icu.ICU;
+
 import java.text.DateFormatSymbols;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Locale;
 
-import libcore.icu.ICU;
-
 /**
  * A delegate implementing the basic DatePicker
  */
diff --git a/core/java/android/widget/DayPickerPagerAdapter.java b/core/java/android/widget/DayPickerPagerAdapter.java
index f748d3a..8d5bf8f 100644
--- a/core/java/android/widget/DayPickerPagerAdapter.java
+++ b/core/java/android/widget/DayPickerPagerAdapter.java
@@ -16,9 +16,6 @@
 
 package android.widget;
 
-import android.graphics.Rect;
-import com.android.internal.widget.PagerAdapter;
-
 import android.annotation.IdRes;
 import android.annotation.LayoutRes;
 import android.annotation.NonNull;
@@ -26,6 +23,7 @@
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
+import android.graphics.Rect;
 import android.icu.util.Calendar;
 import android.util.SparseArray;
 import android.view.LayoutInflater;
@@ -33,6 +31,8 @@
 import android.view.ViewGroup;
 import android.widget.SimpleMonthView.OnDayClickListener;
 
+import com.android.internal.widget.PagerAdapter;
+
 /**
  * An adapter for a list of {@link android.widget.SimpleMonthView} items.
  */
diff --git a/core/java/android/widget/DayPickerView.java b/core/java/android/widget/DayPickerView.java
index 0c02a2b..919c1e2 100644
--- a/core/java/android/widget/DayPickerView.java
+++ b/core/java/android/widget/DayPickerView.java
@@ -18,15 +18,11 @@
 
 import static android.os.Build.VERSION_CODES.N_MR1;
 
-import android.graphics.Rect;
-import com.android.internal.R;
-import com.android.internal.widget.ViewPager;
-import com.android.internal.widget.ViewPager.OnPageChangeListener;
-
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
+import android.graphics.Rect;
 import android.icu.util.Calendar;
 import android.util.AttributeSet;
 import android.util.MathUtils;
@@ -35,10 +31,14 @@
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityManager;
 
-import java.util.Locale;
+import com.android.internal.R;
+import com.android.internal.widget.ViewPager;
+import com.android.internal.widget.ViewPager.OnPageChangeListener;
 
 import libcore.icu.LocaleData;
 
+import java.util.Locale;
+
 class DayPickerView extends ViewGroup {
     private static final int DEFAULT_LAYOUT = R.layout.day_picker_content_material;
     private static final int DEFAULT_START_YEAR = 1900;
diff --git a/core/java/android/widget/DayPickerViewPager.java b/core/java/android/widget/DayPickerViewPager.java
index 5f0ae29..94022ae 100644
--- a/core/java/android/widget/DayPickerViewPager.java
+++ b/core/java/android/widget/DayPickerViewPager.java
@@ -16,17 +16,12 @@
 
 package android.widget;
 
-import android.annotation.Nullable;
 import android.content.Context;
-import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
 
 import com.android.internal.util.Predicate;
-import com.android.internal.widget.PagerAdapter;
 import com.android.internal.widget.ViewPager;
 
 import java.util.ArrayList;
diff --git a/core/java/android/widget/DialerFilter.java b/core/java/android/widget/DialerFilter.java
index e37e3ba7..8f9c96c 100644
--- a/core/java/android/widget/DialerFilter.java
+++ b/core/java/android/widget/DialerFilter.java
@@ -17,7 +17,7 @@
 package android.widget;
 
 import android.content.Context;
-import android.view.KeyEvent;
+import android.graphics.Rect;
 import android.text.Editable;
 import android.text.InputFilter;
 import android.text.Selection;
@@ -28,8 +28,8 @@
 import android.text.method.KeyListener;
 import android.text.method.TextKeyListener;
 import android.util.AttributeSet;
+import android.view.KeyEvent;
 import android.view.View;
-import android.graphics.Rect;
 
 /**
  * This widget is a layout that contains several specifically-named child views that
@@ -169,7 +169,7 @@
                         // Only check to see if the digit is valid if the key is a printing key
                         // in the TextKeyListener. This prevents us from hiding the digits
                         // line when keys like UP and DOWN are hit.
-                        // XXX note that KEYCODE_TAB is special-cased here for 
+                        // XXX note that KEYCODE_TAB is special-cased here for
                         // devices that share tab and 0 on a single key.
                         boolean isPrint = event.isPrintingKey();
                         if (isPrint || keyCode == KeyEvent.KEYCODE_SPACE
diff --git a/core/java/android/widget/DigitalClock.java b/core/java/android/widget/DigitalClock.java
index 1df1643..c503ef2 100644
--- a/core/java/android/widget/DigitalClock.java
+++ b/core/java/android/widget/DigitalClock.java
@@ -23,6 +23,7 @@
 import android.provider.Settings;
 import android.text.format.DateFormat;
 import android.util.AttributeSet;
+
 import java.util.Calendar;
 
 /**
diff --git a/core/java/android/widget/DropDownListView.java b/core/java/android/widget/DropDownListView.java
index 69e4218..e9c4728 100644
--- a/core/java/android/widget/DropDownListView.java
+++ b/core/java/android/widget/DropDownListView.java
@@ -17,13 +17,13 @@
 package android.widget;
 
 
-import com.android.internal.widget.AutoScrollHelper.AbsListViewAutoScroller;
-
 import android.annotation.NonNull;
 import android.content.Context;
 import android.view.MotionEvent;
 import android.view.View;
 
+import com.android.internal.widget.AutoScrollHelper.AbsListViewAutoScroller;
+
 /**
  * Wrapper class for a ListView. This wrapper can hijack the focus to
  * make sure the list uses the appropriate drawables and states when
diff --git a/core/java/android/widget/EdgeEffect.java b/core/java/android/widget/EdgeEffect.java
index 9019f31..98d8a13 100644
--- a/core/java/android/widget/EdgeEffect.java
+++ b/core/java/android/widget/EdgeEffect.java
@@ -17,14 +17,13 @@
 package android.widget;
 
 import android.annotation.ColorInt;
+import android.content.Context;
 import android.content.res.TypedArray;
+import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffXfermode;
 import android.graphics.Rect;
-
-import android.content.Context;
-import android.graphics.Canvas;
 import android.view.animation.AnimationUtils;
 import android.view.animation.DecelerateInterpolator;
 import android.view.animation.Interpolator;
@@ -103,7 +102,7 @@
     private int mState = STATE_IDLE;
 
     private float mPullDistance;
-    
+
     private final Rect mBounds = new Rect();
     private final Paint mPaint = new Paint();
     private float mRadius;
diff --git a/core/java/android/widget/EditText.java b/core/java/android/widget/EditText.java
index 24d8618..a8d3984 100644
--- a/core/java/android/widget/EditText.java
+++ b/core/java/android/widget/EditText.java
@@ -17,7 +17,6 @@
 package android.widget;
 
 import android.content.Context;
-import android.os.Bundle;
 import android.text.Editable;
 import android.text.Selection;
 import android.text.Spannable;
diff --git a/core/java/android/widget/ExpandableListView.java b/core/java/android/widget/ExpandableListView.java
index fac36c5..8d9848d 100644
--- a/core/java/android/widget/ExpandableListView.java
+++ b/core/java/android/widget/ExpandableListView.java
@@ -16,7 +16,7 @@
 
 package android.widget;
 
-import com.android.internal.R;
+import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
 
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -27,14 +27,14 @@
 import android.os.Parcelable;
 import android.util.AttributeSet;
 import android.view.ContextMenu;
+import android.view.ContextMenu.ContextMenuInfo;
 import android.view.SoundEffectConstants;
 import android.view.View;
-import android.view.ContextMenu.ContextMenuInfo;
 import android.widget.ExpandableListConnector.PositionMetadata;
 
-import java.util.ArrayList;
+import com.android.internal.R;
 
-import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
+import java.util.ArrayList;
 
 /**
  * A view that shows items in a vertically scrolling two-level list. This
@@ -68,7 +68,7 @@
  * wrap_content since it also can be any length. However, you can use
  * wrap_content if the ExpandableListView parent has a specific size, such as
  * 100 pixels.
- * 
+ *
  * @attr ref android.R.styleable#ExpandableListView_groupIndicator
  * @attr ref android.R.styleable#ExpandableListView_indicatorLeft
  * @attr ref android.R.styleable#ExpandableListView_indicatorRight
@@ -87,7 +87,7 @@
      * The packed position represents a group.
      */
     public static final int PACKED_POSITION_TYPE_GROUP = 0;
-    
+
     /**
      * The packed position represents a child.
      */
@@ -97,14 +97,14 @@
      * The packed position represents a neither/null/no preference.
      */
     public static final int PACKED_POSITION_TYPE_NULL = 2;
-    
+
     /**
      * The value for a packed position that represents neither/null/no
      * preference. This value is not otherwise possible since a group type
      * (first bit 0) should not have a child position filled.
      */
     public static final long PACKED_POSITION_VALUE_NULL = 0x00000000FFFFFFFFL;
-    
+
     /** The mask (in packed position representation) for the child */
     private static final long PACKED_POSITION_MASK_CHILD = 0x00000000FFFFFFFFL;
 
@@ -125,13 +125,13 @@
 
     /** The mask (in integer group position representation) for the group */
     private static final long PACKED_POSITION_INT_MASK_GROUP = 0x7FFFFFFF;
-    
+
     /** Serves as the glue/translator between a ListView and an ExpandableListView */
     private ExpandableListConnector mConnector;
-    
-    /** Gives us Views through group+child positions */ 
+
+    /** Gives us Views through group+child positions */
     private ExpandableListAdapter mAdapter;
-    
+
     /** Left bound for drawing the indicator. */
     private int mIndicatorLeft;
 
@@ -210,7 +210,7 @@
     /** State indicating the child is the last within its group. */
     private static final int[] CHILD_LAST_STATE_SET =
             {R.attr.state_last};
-    
+
     /** Drawable to be used as a divider when it is adjacent to any children */
     private Drawable mChildDivider;
 
@@ -367,16 +367,16 @@
         }
 
         final int headerViewsCount = getHeaderViewsCount();
-        
+
         final int lastChildFlPos = mItemCount - getFooterViewsCount() - headerViewsCount - 1;
 
-        final int myB = mBottom; 
-        
+        final int myB = mBottom;
+
         PositionMetadata pos;
         View item;
-        Drawable indicator; 
+        Drawable indicator;
         int t, b;
-        
+
         // Start at a value that is neither child nor group
         int lastItemType = ~(ExpandableListPosition.CHILD | ExpandableListPosition.GROUP);
 
@@ -385,7 +385,7 @@
         // The "child" mentioned in the following two lines is this
         // View's child, not referring to an expandable list's
         // notion of a child (as opposed to a group)
-        final int childCount = getChildCount(); 
+        final int childCount = getChildCount();
         for (int i = 0, childFlPos = mFirstPosition - headerViewsCount; i < childCount;
              i++, childFlPos++) {
 
@@ -396,11 +396,11 @@
                 // This child is footer, so are all subsequent children
                 break;
             }
-            
+
             item = getChildAt(i);
             t = item.getTop();
             b = item.getBottom();
-            
+
             // This item isn't on the screen
             if ((b < 0) || (t > myB)) continue;
 
@@ -435,7 +435,7 @@
                     indicatorRect.right += mPaddingLeft;
                 }
 
-                lastItemType = pos.position.type; 
+                lastItemType = pos.position.type;
             }
 
             if (indicatorRect.left != indicatorRect.right) {
@@ -448,7 +448,7 @@
                     indicatorRect.top = t;
                     indicatorRect.bottom = b;// + mDividerHeight;
                 }
-                
+
                 // Get the indicator (with its state set to the item's state)
                 indicator = getIndicator(pos);
                 if (indicator != null) {
@@ -468,24 +468,24 @@
     /**
      * Gets the indicator for the item at the given position. If the indicator
      * is stateful, the state will be given to the indicator.
-     * 
+     *
      * @param pos The flat list position of the item whose indicator
      *            should be returned.
      * @return The indicator in the proper state.
      */
     private Drawable getIndicator(PositionMetadata pos) {
         Drawable indicator;
-        
+
         if (pos.position.type == ExpandableListPosition.GROUP) {
             indicator = mGroupIndicator;
-            
+
             if (indicator != null && indicator.isStateful()) {
                 // Empty check based on availability of data.  If the groupMetadata isn't null,
                 // we do a check on it. Otherwise, the group is collapsed so we consider it
                 // empty for performance reasons.
                 boolean isEmpty = (pos.groupMetadata == null) ||
                         (pos.groupMetadata.lastChildFlPos == pos.groupMetadata.flPos);
-                
+
                 final int stateSetIndex =
                     (pos.isExpanded() ? 1 : 0) | // Expanded?
                     (isEmpty ? 2 : 0); // Empty?
@@ -493,7 +493,7 @@
             }
         } else {
             indicator = mChildIndicator;
-            
+
             if (indicator != null && indicator.isStateful()) {
                 // No need for a state sets array for the child since it only has two states
                 final int stateSet[] = pos.position.flatListPos == pos.groupMetadata.lastChildFlPos
@@ -502,15 +502,15 @@
                 indicator.setState(stateSet);
             }
         }
-        
+
         return indicator;
     }
-    
+
     /**
      * Sets the drawable that will be drawn adjacent to every child in the list. This will
      * be drawn using the same height as the normal divider ({@link #setDivider(Drawable)}) or
      * if it does not have an intrinsic height, the height set by {@link #setDividerHeight(int)}.
-     * 
+     *
      * @param childDivider The drawable to use.
      */
     public void setChildDivider(Drawable childDivider) {
@@ -520,7 +520,7 @@
     @Override
     void drawDivider(Canvas canvas, Rect bounds, int childIndex) {
         int flatListPosition = childIndex + mFirstPosition;
-        
+
         // Only proceed as possible child if the divider isn't above all items (if it is above
         // all items, then the item below it has to be a group)
         if (flatListPosition >= 0) {
@@ -538,7 +538,7 @@
             }
             pos.recycle();
         }
-        
+
         // Otherwise draw the default divider
         super.drawDivider(canvas, bounds, flatListPosition);
     }
@@ -589,18 +589,18 @@
     public void setAdapter(ExpandableListAdapter adapter) {
         // Set member variable
         mAdapter = adapter;
-        
+
         if (adapter != null) {
             // Create the connector
             mConnector = new ExpandableListConnector(adapter);
         } else {
             mConnector = null;
         }
-        
+
         // Link the ListView (superclass) to the expandable list data through the connector
         super.setAdapter(mConnector);
     }
-    
+
     /**
      * Gets the adapter that provides data to this view.
      * @return The adapter that provides data to this view.
@@ -608,7 +608,7 @@
     public ExpandableListAdapter getExpandableListAdapter() {
         return mAdapter;
     }
-    
+
     /**
      * @param position An absolute (including header and footer) flat list position.
      * @return true if the position corresponds to a header or a footer item.
@@ -621,7 +621,7 @@
     /**
      * Converts an absolute item flat position into a group/child flat position, shifting according
      * to the number of header items.
-     * 
+     *
      * @param flatListPosition The absolute flat position
      * @return A group/child flat position as expected by the connector.
      */
@@ -632,7 +632,7 @@
     /**
      * Converts a group/child flat position into an absolute flat position, that takes into account
      * the possible headers.
-     * 
+     *
      * @param flatListPosition The child/group flat position
      * @return An absolute flat position.
      */
@@ -647,25 +647,25 @@
             // Clicked on a header/footer, so ignore pass it on to super
             return super.performItemClick(v, position, id);
         }
-        
+
         // Internally handle the item click
         final int adjustedPosition = getFlatPositionForConnector(position);
         return handleItemClick(v, adjustedPosition, id);
     }
-    
+
     /**
      * This will either expand/collapse groups (if a group was clicked) or pass
      * on the click to the proper child (if a child was clicked)
-     * 
+     *
      * @param position The flat list position. This has already been factored to
      *            remove the header/footer.
      * @param id The ListAdapter ID, not the group or child ID.
      */
     boolean handleItemClick(View v, int position, long id) {
         final PositionMetadata posMetadata = mConnector.getUnflattenedPos(position);
-        
+
         id = getChildOrGroupId(posMetadata.position);
-        
+
         boolean returnValue;
         if (posMetadata.position.type == ExpandableListPosition.GROUP) {
             /* It's a group, so handle collapsing/expanding */
@@ -697,11 +697,11 @@
                 if (mOnGroupExpandListener != null) {
                     mOnGroupExpandListener.onGroupExpand(posMetadata.position.groupPos);
                 }
-                
+
                 final int groupPos = posMetadata.position.groupPos;
                 final int groupFlatPos = posMetadata.position.flatListPos;
 
-                final int shiftedGroupPosition = groupFlatPos + getHeaderViewsCount(); 
+                final int shiftedGroupPosition = groupFlatPos + getHeaderViewsCount();
                 smoothScrollToPosition(shiftedGroupPosition + mAdapter.getChildrenCount(groupPos),
                         shiftedGroupPosition);
             }
@@ -764,17 +764,17 @@
 
         return retValue;
     }
-    
+
     /**
      * Collapse a group in the grouped list view
-     * 
+     *
      * @param groupPos position of the group to collapse
      * @return True if the group was collapsed, false otherwise (if the group
      *         was already collapsed, this will return false)
      */
     public boolean collapseGroup(int groupPos) {
         boolean retValue = mConnector.collapseGroup(groupPos);
-        
+
         if (mOnGroupCollapseListener != null) {
             mOnGroupCollapseListener.onGroupCollapse(groupPos);
         }
@@ -787,14 +787,14 @@
         /**
          * Callback method to be invoked when a group in this expandable list has
          * been collapsed.
-         * 
+         *
          * @param groupPosition The group position that was collapsed
          */
         void onGroupCollapse(int groupPosition);
     }
-    
+
     private OnGroupCollapseListener mOnGroupCollapseListener;
-    
+
     public void setOnGroupCollapseListener(
             OnGroupCollapseListener onGroupCollapseListener) {
         mOnGroupCollapseListener = onGroupCollapseListener;
@@ -805,14 +805,14 @@
         /**
          * Callback method to be invoked when a group in this expandable list has
          * been expanded.
-         * 
+         *
          * @param groupPosition The group position that was expanded
          */
         void onGroupExpand(int groupPosition);
     }
-    
+
     private OnGroupExpandListener mOnGroupExpandListener;
-    
+
     public void setOnGroupExpandListener(
             OnGroupExpandListener onGroupExpandListener) {
         mOnGroupExpandListener = onGroupExpandListener;
@@ -826,7 +826,7 @@
         /**
          * Callback method to be invoked when a group in this expandable list has
          * been clicked.
-         * 
+         *
          * @param parent The ExpandableListConnector where the click happened
          * @param v The view within the expandable list/ListView that was clicked
          * @param groupPosition The group position that was clicked
@@ -836,13 +836,13 @@
         boolean onGroupClick(ExpandableListView parent, View v, int groupPosition,
                 long id);
     }
-    
+
     private OnGroupClickListener mOnGroupClickListener;
 
     public void setOnGroupClickListener(OnGroupClickListener onGroupClickListener) {
         mOnGroupClickListener = onGroupClickListener;
     }
-    
+
     /**
      * Interface definition for a callback to be invoked when a child in this
      * expandable list has been clicked.
@@ -851,7 +851,7 @@
         /**
          * Callback method to be invoked when a child in this expandable list has
          * been clicked.
-         * 
+         *
          * @param parent The ExpandableListView where the click happened
          * @param v The view within the expandable list/ListView that was clicked
          * @param groupPosition The group position that contains the child that
@@ -863,13 +863,13 @@
         boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
                 int childPosition, long id);
     }
-    
+
     private OnChildClickListener mOnChildClickListener;
 
     public void setOnChildClickListener(OnChildClickListener onChildClickListener) {
         mOnChildClickListener = onChildClickListener;
     }
-    
+
     /**
      * Converts a flat list position (the raw position of an item (child or group)
      * in the list) to a group and/or child position (represented in a
@@ -878,7 +878,7 @@
      * {@link ExpandableListView#getPackedPositionType} ,
      * {@link ExpandableListView#getPackedPositionChild},
      * {@link ExpandableListView#getPackedPositionGroup} to unpack.
-     * 
+     *
      * @param flatListPosition The flat list position to be converted.
      * @return The group and/or child position for the given flat list position
      *         in packed position representation. #PACKED_POSITION_VALUE_NULL if
@@ -895,12 +895,12 @@
         pm.recycle();
         return packedPos;
     }
-    
+
     /**
      * Converts a group and/or child position to a flat list position. This is
      * useful in situations where the caller needs to use the underlying
      * {@link ListView}'s methods.
-     * 
+     *
      * @param packedPosition The group and/or child positions to be converted in
      *            packed position representation. Use
      *            {@link #getPackedPositionForChild(int, int)} or
@@ -920,7 +920,7 @@
     /**
      * Gets the position of the currently selected group or child (along with
      * its type). Can return {@link #PACKED_POSITION_VALUE_NULL} if no selection.
-     * 
+     *
      * @return A packed position containing the currently selected group or
      *         child's position and type. #PACKED_POSITION_VALUE_NULL if no selection
      *         or if selection is on a header or a footer item.
@@ -931,11 +931,11 @@
         // The case where there is no selection (selectedPos == -1) is also handled here.
         return getExpandableListPosition(selectedPos);
     }
-    
+
     /**
      * Gets the ID of the currently selected group or child. Can return -1 if no
      * selection.
-     * 
+     *
      * @return The ID of the currently selected group or child. -1 if no
      *         selection.
      */
@@ -944,7 +944,7 @@
         if (packedPos == PACKED_POSITION_VALUE_NULL) return -1;
 
         int groupPos = getPackedPositionGroup(packedPos);
-        
+
         if (getPackedPositionType(packedPos) == PACKED_POSITION_TYPE_GROUP) {
             // It's a group
             return mAdapter.getGroupId(groupPos);
@@ -953,7 +953,7 @@
             return mAdapter.getChildId(groupPos, getPackedPositionChild(packedPos));
         }
     }
-    
+
     /**
      * Sets the selection to the specified group.
      * @param groupPosition The position of the group that should be selected.
@@ -967,12 +967,12 @@
         super.setSelection(absoluteFlatPosition);
         pm.recycle();
     }
-    
+
     /**
      * Sets the selection to the specified child. If the child is in a collapsed
      * group, the group will only be expanded and child subsequently selected if
      * shouldExpandGroup is set to true, otherwise the method will return false.
-     * 
+     *
      * @param groupPosition The position of the group that contains the child.
      * @param childPosition The position of the child within the group.
      * @param shouldExpandGroup Whether the child's group should be expanded if
@@ -981,48 +981,48 @@
      */
     public boolean setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup) {
         ExpandableListPosition elChildPos = ExpandableListPosition.obtainChildPosition(
-                groupPosition, childPosition); 
+                groupPosition, childPosition);
         PositionMetadata flatChildPos = mConnector.getFlattenedPos(elChildPos);
-        
+
         if (flatChildPos == null) {
             // The child's group isn't expanded
-            
+
             // Shouldn't expand the group, so return false for we didn't set the selection
-            if (!shouldExpandGroup) return false; 
+            if (!shouldExpandGroup) return false;
 
             expandGroup(groupPosition);
-            
+
             flatChildPos = mConnector.getFlattenedPos(elChildPos);
-            
+
             // Sanity check
             if (flatChildPos == null) {
                 throw new IllegalStateException("Could not find child");
             }
         }
-        
+
         int absoluteFlatPosition = getAbsoluteFlatPosition(flatChildPos.position.flatListPos);
         super.setSelection(absoluteFlatPosition);
-        
+
         elChildPos.recycle();
         flatChildPos.recycle();
-        
+
         return true;
     }
 
     /**
      * Whether the given group is currently expanded.
-     * 
+     *
      * @param groupPosition The group to check.
      * @return Whether the group is currently expanded.
      */
     public boolean isGroupExpanded(int groupPosition) {
         return mConnector.isGroupExpanded(groupPosition);
     }
-    
+
     /**
      * Gets the type of a packed position. See
      * {@link #getPackedPositionForChild(int, int)}.
-     * 
+     *
      * @param packedPosition The packed position for which to return the type.
      * @return The type of the position contained within the packed position,
      *         either {@link #PACKED_POSITION_TYPE_CHILD}, {@link #PACKED_POSITION_TYPE_GROUP}, or
@@ -1032,7 +1032,7 @@
         if (packedPosition == PACKED_POSITION_VALUE_NULL) {
             return PACKED_POSITION_TYPE_NULL;
         }
-        
+
         return (packedPosition & PACKED_POSITION_MASK_TYPE) == PACKED_POSITION_MASK_TYPE
                 ? PACKED_POSITION_TYPE_CHILD
                 : PACKED_POSITION_TYPE_GROUP;
@@ -1041,7 +1041,7 @@
     /**
      * Gets the group position from a packed position. See
      * {@link #getPackedPositionForChild(int, int)}.
-     * 
+     *
      * @param packedPosition The packed position from which the group position
      *            will be returned.
      * @return The group position portion of the packed position. If this does
@@ -1050,7 +1050,7 @@
     public static int getPackedPositionGroup(long packedPosition) {
         // Null
         if (packedPosition == PACKED_POSITION_VALUE_NULL) return -1;
-        
+
         return (int) ((packedPosition & PACKED_POSITION_MASK_GROUP) >> PACKED_POSITION_SHIFT_GROUP);
     }
 
@@ -1060,7 +1060,7 @@
      * To get the group that this child belongs to, use
      * {@link #getPackedPositionGroup(long)}. See
      * {@link #getPackedPositionForChild(int, int)}.
-     * 
+     *
      * @param packedPosition The packed position from which the child position
      *            will be returned.
      * @return The child position portion of the packed position. If this does
@@ -1069,7 +1069,7 @@
     public static int getPackedPositionChild(long packedPosition) {
         // Null
         if (packedPosition == PACKED_POSITION_VALUE_NULL) return -1;
-        
+
         // Group since a group type clears this bit
         if ((packedPosition & PACKED_POSITION_MASK_TYPE) != PACKED_POSITION_MASK_TYPE) return -1;
 
@@ -1087,7 +1087,7 @@
      * {@link #getPackedPositionChild(long)},
      * {@link #getPackedPositionGroup(long)}, and
      * {@link #getPackedPositionType(long)}.
-     * 
+     *
      * @param groupPosition The child's parent group's position.
      * @param childPosition The child position within the group.
      * @return The packed position representation of the child (and parent group).
@@ -1096,20 +1096,20 @@
         return (((long)PACKED_POSITION_TYPE_CHILD) << PACKED_POSITION_SHIFT_TYPE)
                 | ((((long)groupPosition) & PACKED_POSITION_INT_MASK_GROUP)
                         << PACKED_POSITION_SHIFT_GROUP)
-                | (childPosition & PACKED_POSITION_INT_MASK_CHILD);  
+                | (childPosition & PACKED_POSITION_INT_MASK_CHILD);
     }
 
     /**
      * Returns the packed position representation of a group's position. See
      * {@link #getPackedPositionForChild(int, int)}.
-     * 
+     *
      * @param groupPosition The child's parent group's position.
      * @return The packed position representation of the group.
      */
     public static long getPackedPositionForGroup(int groupPosition) {
         // No need to OR a type in because PACKED_POSITION_GROUP == 0
         return ((((long)groupPosition) & PACKED_POSITION_INT_MASK_GROUP)
-                        << PACKED_POSITION_SHIFT_GROUP); 
+                        << PACKED_POSITION_SHIFT_GROUP);
     }
 
     @Override
@@ -1122,12 +1122,12 @@
         final int adjustedPosition = getFlatPositionForConnector(flatListPosition);
         PositionMetadata pm = mConnector.getUnflattenedPos(adjustedPosition);
         ExpandableListPosition pos = pm.position;
-        
+
         id = getChildOrGroupId(pos);
         long packedPosition = pos.getPackedPosition();
 
         pm.recycle();
-        
+
         return new ExpandableListContextMenuInfo(view, packedPosition, id);
     }
 
@@ -1135,7 +1135,7 @@
      * Gets the ID of the group or child at the given <code>position</code>.
      * This is useful since there is no ListAdapter ID -> ExpandableListAdapter
      * ID conversion mechanism (in some cases, it isn't possible).
-     * 
+     *
      * @param position The position of the child or group whose ID should be
      *            returned.
      */
@@ -1146,10 +1146,10 @@
             return mAdapter.getGroupId(position.groupPos);
         }
     }
-    
+
     /**
      * Sets the indicator to be drawn next to a child.
-     * 
+     *
      * @param childIndicator The drawable to be used as an indicator. If the
      *            child is the last child for a group, the state
      *            {@link android.R.attr#state_last} will be set.
@@ -1157,7 +1157,7 @@
     public void setChildIndicator(Drawable childIndicator) {
         mChildIndicator = childIndicator;
     }
-    
+
     /**
      * Sets the drawing bounds for the child indicator. For either, you can
      * specify {@link #CHILD_INDICATOR_INHERIT} to use inherit from the general
@@ -1194,7 +1194,7 @@
 
     /**
      * Sets the indicator to be drawn next to a group.
-     * 
+     *
      * @param groupIndicator The drawable to be used as an indicator. If the
      *            group is empty, the state {@link android.R.attr#state_empty} will be
      *            set. If the group is expanded, the state
@@ -1211,8 +1211,8 @@
      * Sets the drawing bounds for the indicators (at minimum, the group indicator
      * is affected by this; the child indicator is affected by this if the
      * child indicator bounds are set to inherit).
-     * 
-     * @see #setChildIndicatorBounds(int, int) 
+     *
+     * @see #setChildIndicatorBounds(int, int)
      * @param left The left position (relative to the left bounds of this View)
      *            to start drawing the indicator.
      * @param right The right position (relative to the left bounds of this
@@ -1248,13 +1248,13 @@
      * callback when a context menu is brought up for this AdapterView.
      */
     public static class ExpandableListContextMenuInfo implements ContextMenu.ContextMenuInfo {
-        
+
         public ExpandableListContextMenuInfo(View targetView, long packedPosition, long id) {
             this.targetView = targetView;
             this.packedPosition = packedPosition;
             this.id = id;
         }
-        
+
         /**
          * The view for which the context menu is being displayed. This
          * will be one of the children Views of this {@link ExpandableListView}.
@@ -1276,10 +1276,10 @@
          */
         public long id;
     }
-    
+
     static class SavedState extends BaseSavedState {
         ArrayList<ExpandableListConnector.GroupMetadata> expandedGroupMetadataList;
-        
+
         /**
          * Constructor called from {@link ExpandableListView#onSaveInstanceState()}
          */
@@ -1333,7 +1333,7 @@
 
         SavedState ss = (SavedState) state;
         super.onRestoreInstanceState(ss.getSuperState());
-        
+
         if (mConnector != null && ss.expandedGroupMetadataList != null) {
             mConnector.setExpandedGroupMetadataList(ss.expandedGroupMetadataList);
         }
diff --git a/core/java/android/widget/FrameLayout.java b/core/java/android/widget/FrameLayout.java
index b8c74d8..dc8ee01 100644
--- a/core/java/android/widget/FrameLayout.java
+++ b/core/java/android/widget/FrameLayout.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.AttrRes;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -34,6 +32,8 @@
 import android.view.ViewHierarchyEncoder;
 import android.widget.RemoteViews.RemoteView;
 
+import com.android.internal.R;
+
 import java.util.ArrayList;
 
 /**
diff --git a/core/java/android/widget/GridLayout.java b/core/java/android/widget/GridLayout.java
index af2852c..1c15c7a 100644
--- a/core/java/android/widget/GridLayout.java
+++ b/core/java/android/widget/GridLayout.java
@@ -16,6 +16,20 @@
 
 package android.widget;
 
+import static android.view.Gravity.AXIS_PULL_AFTER;
+import static android.view.Gravity.AXIS_PULL_BEFORE;
+import static android.view.Gravity.AXIS_SPECIFIED;
+import static android.view.Gravity.AXIS_X_SHIFT;
+import static android.view.Gravity.AXIS_Y_SHIFT;
+import static android.view.Gravity.HORIZONTAL_GRAVITY_MASK;
+import static android.view.Gravity.RELATIVE_LAYOUT_DIRECTION;
+import static android.view.Gravity.VERTICAL_GRAVITY_MASK;
+import static android.view.View.MeasureSpec.EXACTLY;
+import static android.view.View.MeasureSpec.makeMeasureSpec;
+
+import static java.lang.Math.max;
+import static java.lang.Math.min;
+
 import android.annotation.IntDef;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -32,6 +46,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.RemoteViews.RemoteView;
+
 import com.android.internal.R;
 
 import java.lang.annotation.Retention;
@@ -43,12 +58,6 @@
 import java.util.List;
 import java.util.Map;
 
-import static android.view.Gravity.*;
-import static android.view.View.MeasureSpec.EXACTLY;
-import static android.view.View.MeasureSpec.makeMeasureSpec;
-import static java.lang.Math.max;
-import static java.lang.Math.min;
-
 /**
  * A layout that places its children in a rectangular <em>grid</em>.
  * <p>
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java
index b95aa52..20543fb 100644
--- a/core/java/android/widget/GridView.java
+++ b/core/java/android/widget/GridView.java
@@ -36,9 +36,9 @@
 import android.view.ViewRootImpl;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
-import android.view.accessibility.AccessibilityNodeProvider;
 import android.view.accessibility.AccessibilityNodeInfo.CollectionInfo;
 import android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo;
+import android.view.accessibility.AccessibilityNodeProvider;
 import android.view.animation.GridLayoutAnimationController;
 import android.widget.RemoteViews.RemoteView;
 
@@ -54,7 +54,7 @@
  *
  * <p>See the <a href="{@docRoot}guide/topics/ui/layout/gridview.html">Grid
  * View</a> guide.</p>
- * 
+ *
  * @attr ref android.R.styleable#GridView_horizontalSpacing
  * @attr ref android.R.styleable#GridView_verticalSpacing
  * @attr ref android.R.styleable#GridView_stretchMode
@@ -71,33 +71,33 @@
 
     /**
      * Disables stretching.
-     * 
-     * @see #setStretchMode(int) 
+     *
+     * @see #setStretchMode(int)
      */
     public static final int NO_STRETCH = 0;
     /**
      * Stretches the spacing between columns.
-     * 
-     * @see #setStretchMode(int) 
+     *
+     * @see #setStretchMode(int)
      */
     public static final int STRETCH_SPACING = 1;
     /**
      * Stretches columns.
-     * 
-     * @see #setStretchMode(int) 
+     *
+     * @see #setStretchMode(int)
      */
     public static final int STRETCH_COLUMN_WIDTH = 2;
     /**
      * Stretches the spacing between columns. The spacing is uniform.
-     * 
-     * @see #setStretchMode(int) 
+     *
+     * @see #setStretchMode(int)
      */
     public static final int STRETCH_SPACING_UNIFORM = 3;
 
     /**
      * Creates as many columns as can fit on screen.
-     * 
-     * @see #setNumColumns(int) 
+     *
+     * @see #setNumColumns(int)
      */
     public static final int AUTO_FIT = -1;
 
@@ -161,7 +161,7 @@
         if (index >= 0) {
             setGravity(index);
         }
-        
+
         a.recycle();
     }
 
@@ -192,7 +192,7 @@
         }
 
         resetList();
-        mRecycler.clear();        
+        mRecycler.clear();
         mAdapter = adapter;
 
         mOldSelectedPosition = INVALID_POSITION;
@@ -222,7 +222,7 @@
             setNextSelectedPositionInt(position);
             checkSelectionChanged();
         } else {
-            checkFocus();            
+            checkFocus();
             // Nothing selected
             checkSelectionChanged();
         }
@@ -376,7 +376,7 @@
         }
 
         mReferenceView = child;
-        
+
         if (selectedView != null) {
             mReferenceViewInSelectedRow = mReferenceView;
         }
@@ -515,7 +515,7 @@
                 offsetChildrenTopAndBottom(offset);
             }
         }
-    }    
+    }
 
     @Override
     int findMotionRow(int y) {
@@ -624,7 +624,7 @@
 
             // This is how far the bottom edge of the last view is from the bottom of the
             // drawable area
-            int bottomOffset = end - lastBottom;        
+            int bottomOffset = end - lastBottom;
 
             final View firstChild = getChildAt(0);
             final int firstTop = firstChild.getTop();
@@ -636,7 +636,7 @@
                     // Don't pull the top too far down
                     bottomOffset = Math.min(bottomOffset, mListPadding.top - firstTop);
                 }
-                
+
                 // Move everything down
                 offsetChildrenTopAndBottom(bottomOffset);
                 if (mFirstPosition > 0) {
@@ -679,7 +679,7 @@
                     // Don't pull the bottom too far up
                     topOffset = Math.min(topOffset, lastBottom - end);
                 }
-                
+
                 // Move everything up
                 offsetChildrenTopAndBottom(-topOffset);
                 if (lastPosition < mItemCount - 1) {
@@ -965,7 +965,7 @@
         final int stretchMode = mStretchMode;
         final int requestedColumnWidth = mRequestedColumnWidth;
         boolean didNotInitiallyFit = false;
-        
+
         if (mRequestedNumColumns == AUTO_FIT) {
             if (requestedColumnWidth > 0) {
                 // Client told us to pick the number of columns
@@ -979,57 +979,57 @@
             // We picked the columns
             mNumColumns = mRequestedNumColumns;
         }
-        
+
         if (mNumColumns <= 0) {
             mNumColumns = 1;
         }
 
         switch (stretchMode) {
-        case NO_STRETCH:
-            // Nobody stretches
-            mColumnWidth = requestedColumnWidth;
-            mHorizontalSpacing = requestedHorizontalSpacing;
-            break;
-
-        default:
-            int spaceLeftOver = availableSpace - (mNumColumns * requestedColumnWidth) -
-                    ((mNumColumns - 1) * requestedHorizontalSpacing);
-
-            if (spaceLeftOver < 0) {
-                didNotInitiallyFit = true;
-            }
-
-            switch (stretchMode) {
-            case STRETCH_COLUMN_WIDTH:
-                // Stretch the columns
-                mColumnWidth = requestedColumnWidth + spaceLeftOver / mNumColumns;
+            case NO_STRETCH:
+                // Nobody stretches
+                mColumnWidth = requestedColumnWidth;
                 mHorizontalSpacing = requestedHorizontalSpacing;
                 break;
 
-            case STRETCH_SPACING:
-                // Stretch the spacing between columns
-                mColumnWidth = requestedColumnWidth;
-                if (mNumColumns > 1) {
-                    mHorizontalSpacing = requestedHorizontalSpacing + 
-                        spaceLeftOver / (mNumColumns - 1);
-                } else {
-                    mHorizontalSpacing = requestedHorizontalSpacing + spaceLeftOver;
-                }
-                break;
+            default:
+                int spaceLeftOver = availableSpace - (mNumColumns * requestedColumnWidth)
+                        - ((mNumColumns - 1) * requestedHorizontalSpacing);
 
-            case STRETCH_SPACING_UNIFORM:
-                // Stretch the spacing between columns
-                mColumnWidth = requestedColumnWidth;
-                if (mNumColumns > 1) {
-                    mHorizontalSpacing = requestedHorizontalSpacing + 
-                        spaceLeftOver / (mNumColumns + 1);
-                } else {
-                    mHorizontalSpacing = requestedHorizontalSpacing + spaceLeftOver;
+                if (spaceLeftOver < 0) {
+                    didNotInitiallyFit = true;
                 }
-                break;
-            }
 
-            break;
+                switch (stretchMode) {
+                    case STRETCH_COLUMN_WIDTH:
+                        // Stretch the columns
+                        mColumnWidth = requestedColumnWidth + spaceLeftOver / mNumColumns;
+                        mHorizontalSpacing = requestedHorizontalSpacing;
+                        break;
+
+                    case STRETCH_SPACING:
+                        // Stretch the spacing between columns
+                        mColumnWidth = requestedColumnWidth;
+                        if (mNumColumns > 1) {
+                            mHorizontalSpacing = requestedHorizontalSpacing
+                                    + spaceLeftOver / (mNumColumns - 1);
+                        } else {
+                            mHorizontalSpacing = requestedHorizontalSpacing + spaceLeftOver;
+                        }
+                        break;
+
+                    case STRETCH_SPACING_UNIFORM:
+                        // Stretch the spacing between columns
+                        mColumnWidth = requestedColumnWidth;
+                        if (mNumColumns > 1) {
+                            mHorizontalSpacing = requestedHorizontalSpacing
+                                    + spaceLeftOver / (mNumColumns + 1);
+                        } else {
+                            mHorizontalSpacing = requestedHorizontalSpacing + spaceLeftOver;
+                        }
+                        break;
+                }
+
+                break;
         }
         return didNotInitiallyFit;
     }
@@ -1052,7 +1052,7 @@
             }
             widthSize += getVerticalScrollbarWidth();
         }
-        
+
         int childWidth = widthSize - mListPadding.left - mListPadding.right;
         boolean didNotInitiallyFit = determineColumns(childWidth);
 
@@ -1087,7 +1087,7 @@
                 mRecycler.addScrapView(child, -1);
             }
         }
-        
+
         if (heightMode == MeasureSpec.UNSPECIFIED) {
             heightSize = mListPadding.top + mListPadding.bottom + childHeight +
                     getVerticalFadingEdgeLength() * 2;
@@ -1095,7 +1095,7 @@
 
         if (heightMode == MeasureSpec.AT_MOST) {
             int ourSize =  mListPadding.top + mListPadding.bottom;
-           
+
             final int numColumns = mNumColumns;
             for (int i = 0; i < count; i += numColumns) {
                 ourSize += childHeight;
@@ -1574,9 +1574,9 @@
 
     /**
      * Sets the currently selected item
-     * 
+     *
      * @param position Index (starting at 0) of the data item to be selected.
-     * 
+     *
      * If in touch mode, the item will not be selected but it will still be positioned
      * appropriately.
      */
@@ -1609,8 +1609,8 @@
 
         setNextSelectedPositionInt(position);
         layoutChildren();
-        
-        final int next = mStackFromBottom ? mItemCount - 1  - mNextSelectedPosition : 
+
+        final int next = mStackFromBottom ? mItemCount - 1  - mNextSelectedPosition :
             mNextSelectedPosition;
         final int previous = mStackFromBottom ? mItemCount - 1
                 - previousSelectedPosition : previousSelectedPosition;
@@ -1802,7 +1802,7 @@
             invokeOnItemScrollListener();
             moved = true;
         }
-        
+
         if (moved) {
             awakenScrollBars();
         }
@@ -1874,7 +1874,7 @@
         if (moved) {
             awakenScrollBars();
         }
-        
+
         return moved;
     }
 
@@ -2216,17 +2216,17 @@
             requestLayoutIfNecessary();
         }
     }
-    
+
     /**
-     * Get the number of columns in the grid. 
+     * Get the number of columns in the grid.
      * Returns {@link #AUTO_FIT} if the Grid has never been laid out.
      *
      * @attr ref android.R.styleable#GridView_numColumns
-     * 
+     *
      * @see #setNumColumns(int)
      */
     @ViewDebug.ExportedProperty
-    public int getNumColumns() {  
+    public int getNumColumns() {
         return mNumColumns;
     }
 
@@ -2259,13 +2259,13 @@
                 // we are too high, slide all views down to align with bottom
                 child = getChildAt(childCount - 1);
                 delta = child.getBottom() - (getHeight() - mListPadding.bottom);
-                
+
                 if (mFirstPosition + childCount < mItemCount) {
                     // It's OK to have some space below the last item if it is
                     // part of the vertical spacing
                     delta += mVerticalSpacing;
                 }
-                
+
                 if (delta > 0) {
                     // We only are looking to see if we are too high, not too low
                     delta = 0;
@@ -2277,14 +2277,14 @@
             }
         }
     }
-    
+
     @Override
     protected int computeVerticalScrollExtent() {
         final int count = getChildCount();
         if (count > 0) {
             final int numColumns = mNumColumns;
             final int rowCount = (count + numColumns - 1) / numColumns;
-            
+
             int extent = rowCount * 100;
 
             View view = getChildAt(0);
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index d9cb269..4d405c5 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -467,6 +467,14 @@
      * {@link #setImageBitmap(android.graphics.Bitmap)} and
      * {@link android.graphics.BitmapFactory} instead.</p>
      *
+     * <p class="note">On devices running SDK < 24, this method will fail to
+     * apply correct density scaling to images loaded from
+     * {@link ContentResolver#SCHEME_CONTENT content} and
+     * {@link ContentResolver#SCHEME_FILE file} schemes. Applications running
+     * on devices with SDK >= 24 <strong>MUST</strong> specify the
+     * {@code targetSdkVersion} in their manifest as 24 or above for density
+     * scaling to be applied to images loaded from these schemes.</p>
+     *
      * @param uri the Uri of an image, or {@code null} to clear the content
      */
     @android.view.RemotableViewMethod(asyncImpl="setImageURIAsync")
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java
index 6511de8..544e591 100644
--- a/core/java/android/widget/LinearLayout.java
+++ b/core/java/android/widget/LinearLayout.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -34,15 +32,17 @@
 import android.view.ViewHierarchyEncoder;
 import android.widget.RemoteViews.RemoteView;
 
+import com.android.internal.R;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
 
 /**
- * A Layout that arranges its children in a single column or a single row. The direction of 
- * the row can be set by calling {@link #setOrientation(int) setOrientation()}. 
+ * A Layout that arranges its children in a single column or a single row. The direction of
+ * the row can be set by calling {@link #setOrientation(int) setOrientation()}.
  * You can also specify gravity, which specifies the alignment of all the child elements by
- * calling {@link #setGravity(int) setGravity()} or specify that specific children 
+ * calling {@link #setGravity(int) setGravity()} or specify that specific children
  * grow to fill up any remaining space in the layout by setting the <em>weight</em> member of
  * {@link android.widget.LinearLayout.LayoutParams LinearLayout.LayoutParams}.
  * The default orientation is horizontal.
@@ -202,7 +202,7 @@
     public LinearLayout(Context context, @Nullable AttributeSet attrs) {
         this(context, attrs, 0);
     }
-    
+
     public LinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
         this(context, attrs, defStyleAttr, 0);
     }
@@ -497,7 +497,7 @@
      * When true, all children with a weight will be considered having
      * the minimum size of the largest child. If false, all children are
      * measured normally.
-     * 
+     *
      * @return True to measure children with a weight using the minimum
      *         size of the largest child, false otherwise.
      *
@@ -511,9 +511,9 @@
      * When set to true, all children with a weight will be considered having
      * the minimum size of the largest child. If false, all children are
      * measured normally.
-     * 
+     *
      * Disabled by default.
-     * 
+     *
      * @param enabled True to measure children with a weight using the
      *        minimum size of the largest child, false otherwise.
      *
@@ -589,7 +589,7 @@
     /**
      * @param i The index of the child that will be used if this layout is
      *          part of a larger layout that is baseline aligned.
-     * 
+     *
      * @attr ref android.R.styleable#LinearLayout_baselineAlignedChildIndex
      */
     @android.view.RemotableViewMethod
@@ -720,14 +720,14 @@
         float totalWeight = 0;
 
         final int count = getVirtualChildCount();
-        
+
         final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
         final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
 
         boolean matchWidth = false;
         boolean skippedMeasure = false;
 
-        final int baselineChildIndex = mBaselineAlignedChildIndex;        
+        final int baselineChildIndex = mBaselineAlignedChildIndex;
         final boolean useLargestChild = mUseLargestChild;
 
         int largestChildHeight = Integer.MIN_VALUE;
@@ -886,7 +886,7 @@
 
         // Check against our minimum height
         heightSize = Math.max(heightSize, getSuggestedMinimumHeight());
-        
+
         // Reconcile our calculated size with the heightMeasureSpec
         int heightSizeAndState = resolveSizeAndState(heightSize, heightMeasureSpec, 0);
         heightSize = heightSizeAndState & MEASURED_SIZE_MASK;
@@ -991,12 +991,12 @@
         if (!allFillParent && widthMode != MeasureSpec.EXACTLY) {
             maxWidth = alternativeMaxWidth;
         }
-        
+
         maxWidth += mPaddingLeft + mPaddingRight;
 
         // Check against our minimum width
         maxWidth = Math.max(maxWidth, getSuggestedMinimumWidth());
-        
+
         setMeasuredDimension(resolveSizeAndState(maxWidth, widthMeasureSpec, childState),
                 heightSizeAndState);
 
@@ -1013,13 +1013,13 @@
            final View child = getVirtualChildAt(i);
            if (child != null && child.getVisibility() != GONE) {
                LinearLayout.LayoutParams lp = ((LinearLayout.LayoutParams)child.getLayoutParams());
-               
+
                if (lp.width == LayoutParams.MATCH_PARENT) {
                    // Temporarily force children to reuse their old measured height
                    // FIXME: this may not be right for something like wrapping text?
                    int oldHeight = lp.height;
                    lp.height = child.getMeasuredHeight();
-                   
+
                    // Remeasue with new dimensions
                    measureChildWithMargins(child, uniformMeasureSpec, 0, heightMeasureSpec, 0);
                    lp.height = oldHeight;
@@ -1037,7 +1037,7 @@
      *
      * @see #getOrientation()
      * @see #setOrientation(int)
-     * @see #onMeasure(int, int) 
+     * @see #onMeasure(int, int)
      */
     void measureHorizontal(int widthMeasureSpec, int heightMeasureSpec) {
         mTotalLength = 0;
@@ -1049,7 +1049,7 @@
         float totalWeight = 0;
 
         final int count = getVirtualChildCount();
-        
+
         final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
         final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
 
@@ -1069,7 +1069,7 @@
 
         final boolean baselineAligned = mBaselineAligned;
         final boolean useLargestChild = mUseLargestChild;
-        
+
         final boolean isExactly = widthMode == MeasureSpec.EXACTLY;
 
         int largestChildWidth = Integer.MIN_VALUE;
@@ -1084,7 +1084,7 @@
                 mTotalLength += measureNullChild(i);
                 continue;
             }
-           
+
             if (child.getVisibility() == GONE) {
                 i += getChildrenSkipCount(child, i);
                 continue;
@@ -1263,16 +1263,16 @@
 
         // Add in our padding
         mTotalLength += mPaddingLeft + mPaddingRight;
-        
+
         int widthSize = mTotalLength;
-        
+
         // Check against our minimum width
         widthSize = Math.max(widthSize, getSuggestedMinimumWidth());
-        
+
         // Reconcile our calculated size with the widthMeasureSpec
         int widthSizeAndState = resolveSizeAndState(widthSize, widthMeasureSpec, 0);
         widthSize = widthSizeAndState & MEASURED_SIZE_MASK;
-        
+
         // Either expand children with weight to take up available space or
         // shrink them if they extend beyond our current bounds. If we skipped
         // measurement on any children, we need to measure them now.
@@ -1409,12 +1409,12 @@
         if (!allFillParent && heightMode != MeasureSpec.EXACTLY) {
             maxHeight = alternativeMaxHeight;
         }
-        
+
         maxHeight += mPaddingTop + mPaddingBottom;
 
         // Check against our minimum height
         maxHeight = Math.max(maxHeight, getSuggestedMinimumHeight());
-        
+
         setMeasuredDimension(widthSizeAndState | (childState&MEASURED_STATE_MASK),
                 resolveSizeAndState(maxHeight, heightMeasureSpec,
                         (childState<<MEASURED_HEIGHT_STATE_SHIFT)));
@@ -1434,13 +1434,13 @@
            final View child = getVirtualChildAt(i);
            if (child != null && child.getVisibility() != GONE) {
                LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) child.getLayoutParams();
-               
+
                if (lp.height == LayoutParams.MATCH_PARENT) {
                    // Temporarily force children to reuse their old measured width
                    // FIXME: this may not be right for something like wrapping text?
                    int oldWidth = lp.width;
                    lp.width = child.getMeasuredWidth();
-                   
+
                    // Remeasure with new dimensions
                    measureChildWithMargins(child, widthMeasureSpec, 0, uniformMeasureSpec, 0);
                    lp.width = oldWidth;
@@ -1541,14 +1541,14 @@
 
         int childTop;
         int childLeft;
-        
+
         // Where right end of child should go
         final int width = right - left;
         int childRight = width - mPaddingRight;
-        
+
         // Space available for child
         int childSpace = width - paddingLeft - mPaddingRight;
-        
+
         final int count = getVirtualChildCount();
 
         final int majorGravity = mGravity & Gravity.VERTICAL_GRAVITY_MASK;
@@ -1578,10 +1578,10 @@
             } else if (child.getVisibility() != GONE) {
                 final int childWidth = child.getMeasuredWidth();
                 final int childHeight = child.getMeasuredHeight();
-                
+
                 final LinearLayout.LayoutParams lp =
                         (LinearLayout.LayoutParams) child.getLayoutParams();
-                
+
                 int gravity = lp.gravity;
                 if (gravity < 0) {
                     gravity = minorGravity;
@@ -1647,11 +1647,11 @@
 
         int childTop;
         int childLeft;
-        
+
         // Where bottom of child should go
         final int height = bottom - top;
-        int childBottom = height - mPaddingBottom; 
-        
+        int childBottom = height - mPaddingBottom;
+
         // Space available for child
         int childSpace = height - paddingTop - mPaddingBottom;
 
@@ -1707,12 +1707,12 @@
                 if (baselineAligned && lp.height != LayoutParams.MATCH_PARENT) {
                     childBaseline = child.getBaseline();
                 }
-                
+
                 int gravity = lp.gravity;
                 if (gravity < 0) {
                     gravity = minorGravity;
                 }
-                
+
                 switch (gravity & Gravity.VERTICAL_GRAVITY_MASK) {
                     case Gravity.TOP:
                         childTop = paddingTop + lp.topMargin;
@@ -1764,15 +1764,15 @@
         }
     }
 
-    private void setChildFrame(View child, int left, int top, int width, int height) {        
+    private void setChildFrame(View child, int left, int top, int width, int height) {
         child.layout(left, top, left + width, top + height);
     }
-    
+
     /**
      * Should the layout be a column or a row.
      * @param orientation Pass {@link #HORIZONTAL} or {@link #VERTICAL}. Default
      * value is {@link #HORIZONTAL}.
-     * 
+     *
      * @attr ref android.R.styleable#LinearLayout_orientation
      */
     public void setOrientation(@OrientationMode int orientation) {
@@ -1784,7 +1784,7 @@
 
     /**
      * Returns the current orientation.
-     * 
+     *
      * @return either {@link #HORIZONTAL} or {@link #VERTICAL}
      */
     @OrientationMode
@@ -1797,9 +1797,9 @@
      * this layout has a VERTICAL orientation, this controls where all the child
      * views are placed if there is extra vertical space. If this layout has a
      * HORIZONTAL orientation, this controls the alignment of the children.
-     * 
+     *
      * @param gravity See {@link android.view.Gravity}
-     * 
+     *
      * @attr ref android.R.styleable#LinearLayout_gravity
      */
     @android.view.RemotableViewMethod
@@ -1845,7 +1845,7 @@
             requestLayout();
         }
     }
-    
+
     @Override
     public LayoutParams generateLayoutParams(AttributeSet attrs) {
         return new LinearLayout.LayoutParams(getContext(), attrs);
@@ -1909,7 +1909,7 @@
 
     /**
      * Per-child layout information associated with ViewLinearLayout.
-     * 
+     *
      * @attr ref android.R.styleable#LinearLayout_Layout_layout_weight
      * @attr ref android.R.styleable#LinearLayout_Layout_layout_gravity
      */
diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java
index 6a10743..0bde983 100644
--- a/core/java/android/widget/ListPopupWindow.java
+++ b/core/java/android/widget/ListPopupWindow.java
@@ -16,9 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-import com.android.internal.view.menu.ShowableListMenu;
-
 import android.annotation.AttrRes;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -42,14 +39,17 @@
 import android.view.WindowManager;
 import android.widget.AdapterView.OnItemSelectedListener;
 
+import com.android.internal.R;
+import com.android.internal.view.menu.ShowableListMenu;
+
 /**
  * A ListPopupWindow anchors itself to a host view and displays a
  * list of choices.
- * 
+ *
  * <p>ListPopupWindow contains a number of tricky behaviors surrounding
  * positioning, scrolling parents to fit the dropdown, interacting
  * sanely with the IME if present, and others.
- * 
+ *
  * @see android.widget.AutoCompleteTextView
  * @see android.widget.Spinner
  */
@@ -116,7 +116,7 @@
 
     /**
      * The provided prompt view should appear above list content.
-     * 
+     *
      * @see #setPromptPosition(int)
      * @see #getPromptPosition()
      * @see #setPromptView(View)
@@ -125,7 +125,7 @@
 
     /**
      * The provided prompt view should appear below list content.
-     * 
+     *
      * @see #setPromptPosition(int)
      * @see #getPromptPosition()
      * @see #setPromptView(View)
@@ -138,13 +138,13 @@
      * If used to specify a popup height, the popup will fill available space.
      */
     public static final int MATCH_PARENT = ViewGroup.LayoutParams.MATCH_PARENT;
-    
+
     /**
      * Alias for {@link ViewGroup.LayoutParams#WRAP_CONTENT}.
      * If used to specify a popup width, the popup will use the width of its content.
      */
     public static final int WRAP_CONTENT = ViewGroup.LayoutParams.WRAP_CONTENT;
-    
+
     /**
      * Mode for {@link #setInputMethodMode(int)}: the requirements for the
      * input method should be based on the focusability of the popup.  That is
@@ -152,7 +152,7 @@
      * it doesn't.
      */
     public static final int INPUT_METHOD_FROM_FOCUSABLE = PopupWindow.INPUT_METHOD_FROM_FOCUSABLE;
-    
+
     /**
      * Mode for {@link #setInputMethodMode(int)}: this popup always needs to
      * work with an input method, regardless of whether it is focusable.  This
@@ -160,7 +160,7 @@
      * the input method while it is shown.
      */
     public static final int INPUT_METHOD_NEEDED = PopupWindow.INPUT_METHOD_NEEDED;
-    
+
     /**
      * Mode for {@link #setInputMethodMode(int)}: this popup never needs to
      * work with an input method, regardless of whether it is focusable.  This
@@ -172,7 +172,7 @@
     /**
      * Create a new, empty popup window capable of displaying items from a ListAdapter.
      * Backgrounds should be set using {@link #setBackgroundDrawable(Drawable)}.
-     * 
+     *
      * @param context Context used for contained views.
      */
     public ListPopupWindow(@NonNull Context context) {
@@ -182,7 +182,7 @@
     /**
      * Create a new, empty popup window capable of displaying items from a ListAdapter.
      * Backgrounds should be set using {@link #setBackgroundDrawable(Drawable)}.
-     * 
+     *
      * @param context Context used for contained views.
      * @param attrs Attributes from inflating parent views used to style the popup.
      */
@@ -193,7 +193,7 @@
     /**
      * Create a new, empty popup window capable of displaying items from a ListAdapter.
      * Backgrounds should be set using {@link #setBackgroundDrawable(Drawable)}.
-     * 
+     *
      * @param context Context used for contained views.
      * @param attrs Attributes from inflating parent views used to style the popup.
      * @param defStyleAttr Default style attribute to use for popup content.
@@ -206,7 +206,7 @@
     /**
      * Create a new, empty popup window capable of displaying items from a ListAdapter.
      * Backgrounds should be set using {@link #setBackgroundDrawable(Drawable)}.
-     * 
+     *
      * @param context Context used for contained views.
      * @param attrs Attributes from inflating parent views used to style the popup.
      * @param defStyleAttr Style attribute to read for default styling of popup content.
@@ -248,7 +248,7 @@
         if (mAdapter != null) {
             adapter.registerDataSetObserver(mObserver);
         }
-        
+
         if (mDropDownList != null) {
             mDropDownList.setAdapter(mAdapter);
         }
@@ -257,9 +257,9 @@
     /**
      * Set where the optional prompt view should appear. The default is
      * {@link #POSITION_PROMPT_ABOVE}.
-     * 
+     *
      * @param position A position constant declaring where the prompt should be displayed.
-     * 
+     *
      * @see #POSITION_PROMPT_ABOVE
      * @see #POSITION_PROMPT_BELOW
      */
@@ -269,7 +269,7 @@
 
     /**
      * @return Where the optional prompt view should appear.
-     * 
+     *
      * @see #POSITION_PROMPT_ABOVE
      * @see #POSITION_PROMPT_BELOW
      */
@@ -279,11 +279,11 @@
 
     /**
      * Set whether this window should be modal when shown.
-     * 
+     *
      * <p>If a popup window is modal, it will receive all touch and key input.
      * If the user touches outside the popup window's content area the popup window
      * will be dismissed.
-     * 
+     *
      * @param modal {@code true} if the popup window should be modal, {@code false} otherwise.
      */
     public void setModal(boolean modal) {
@@ -293,7 +293,7 @@
 
     /**
      * Returns whether the popup window will be modal when shown.
-     * 
+     *
      * @return {@code true} if the popup window will be modal, {@code false} otherwise.
      */
     public boolean isModal() {
@@ -304,7 +304,7 @@
      * Forces outside touches to be ignored. Normally if {@link #isDropDownAlwaysVisible()} is
      * false, we allow outside touch to dismiss the dropdown. If this is set to true, then we
      * ignore outside touch even when the drop down is not set to always visible.
-     * 
+     *
      * @hide Used only by AutoCompleteTextView to handle some internal special cases.
      */
     public void setForceIgnoreOutsideTouch(boolean forceIgnoreOutsideTouch) {
@@ -361,7 +361,7 @@
 
     /**
      * Sets a drawable to use as the list item selector.
-     * 
+     *
      * @param selector List selector drawable to use in the popup.
      */
     public void setListSelector(Drawable selector) {
@@ -377,7 +377,7 @@
 
     /**
      * Sets a drawable to be the background for the popup window.
-     * 
+     *
      * @param d A drawable to set as the background.
      */
     public void setBackgroundDrawable(@Nullable Drawable d) {
@@ -386,7 +386,7 @@
 
     /**
      * Set an animation style to use when the popup window is shown or dismissed.
-     * 
+     *
      * @param animationStyle Animation style to use.
      */
     public void setAnimationStyle(@StyleRes int animationStyle) {
@@ -396,7 +396,7 @@
     /**
      * Returns the animation style that will be used when the popup window is
      * shown or dismissed.
-     * 
+     *
      * @return Animation style that will be used.
      */
     public @StyleRes int getAnimationStyle() {
@@ -405,7 +405,7 @@
 
     /**
      * Returns the view that will be used to anchor this popup.
-     * 
+     *
      * @return The popup's anchor view
      */
     public @Nullable View getAnchorView() {
@@ -415,7 +415,7 @@
     /**
      * Sets the popup's anchor view. This popup will always be positioned relative to
      * the anchor view when shown.
-     * 
+     *
      * @param anchor The view to use as an anchor.
      */
     public void setAnchorView(@Nullable View anchor) {
@@ -431,7 +431,7 @@
 
     /**
      * Set the horizontal offset of this popup from its anchor view in pixels.
-     * 
+     *
      * @param offset The horizontal offset of the popup from its anchor.
      */
     public void setHorizontalOffset(int offset) {
@@ -450,7 +450,7 @@
 
     /**
      * Set the vertical offset of this popup from its anchor view in pixels.
-     * 
+     *
      * @param offset The vertical offset of the popup from its anchor.
      */
     public void setVerticalOffset(int offset) {
@@ -489,7 +489,7 @@
     /**
      * Sets the width of the popup window in pixels. Can also be {@link #MATCH_PARENT}
      * or {@link #WRAP_CONTENT}.
-     * 
+     *
      * @param width Width of the popup window.
      */
     public void setWidth(int width) {
@@ -521,7 +521,7 @@
 
     /**
      * Sets the height of the popup window in pixels. Can also be {@link #MATCH_PARENT}.
-     * 
+     *
      * @param height Height of the popup window.
      */
     public void setHeight(int height) {
@@ -543,9 +543,9 @@
 
     /**
      * Sets a listener to receive events when a list item is clicked.
-     * 
+     *
      * @param clickListener Listener to register
-     * 
+     *
      * @see ListView#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener)
      */
     public void setOnItemClickListener(@Nullable AdapterView.OnItemClickListener clickListener) {
@@ -554,9 +554,9 @@
 
     /**
      * Sets a listener to receive events when a list item is selected.
-     * 
+     *
      * @param selectedListener Listener to register.
-     * 
+     *
      * @see ListView#setOnItemSelectedListener(OnItemSelectedListener)
      */
     public void setOnItemSelectedListener(@Nullable OnItemSelectedListener selectedListener) {
@@ -566,7 +566,7 @@
     /**
      * Set a view to act as a user prompt for this popup window. Where the prompt view will appear
      * is controlled by {@link #setPromptPosition(int)}.
-     * 
+     *
      * @param prompt View to use as an informational prompt.
      */
     public void setPromptView(@Nullable View prompt) {
@@ -662,7 +662,7 @@
             mPopup.setWidth(widthSpec);
             mPopup.setHeight(heightSpec);
             mPopup.setClipToScreenEnabled(true);
-            
+
             // use outside touchable to dismiss drop down when touching outside of it, so
             // only set this if the dropdown is not always visible
             mPopup.setOutsideTouchable(!mForceIgnoreOutsideTouch && !mDropDownAlwaysVisible);
@@ -671,7 +671,7 @@
             mPopup.showAsDropDown(getAnchorView(), mDropDownHorizontalOffset,
                     mDropDownVerticalOffset, mDropDownGravity);
             mDropDownList.setSelection(ListView.INVALID_POSITION);
-            
+
             if (!mModal || mDropDownList.isInTouchMode()) {
                 clearListSelection();
             }
@@ -716,11 +716,11 @@
      * Control how the popup operates with an input method: one of
      * {@link #INPUT_METHOD_FROM_FOCUSABLE}, {@link #INPUT_METHOD_NEEDED},
      * or {@link #INPUT_METHOD_NOT_NEEDED}.
-     * 
+     *
      * <p>If the popup is showing, calling this method will take effect only
      * the next time the popup is shown or through a manual call to the {@link #show()}
      * method.</p>
-     * 
+     *
      * @see #getInputMethodMode()
      * @see #show()
      */
@@ -730,7 +730,7 @@
 
     /**
      * Return the current value in {@link #setInputMethodMode(int)}.
-     * 
+     *
      * @see #setInputMethodMode(int)
      */
     public int getInputMethodMode() {
@@ -740,7 +740,7 @@
     /**
      * Set the selected position of the list.
      * Only valid when {@link #isShowing()} == {@code true}.
-     * 
+     *
      * @param position List position to set as selected.
      */
     public void setSelection(int position) {
@@ -786,7 +786,7 @@
 
     /**
      * Perform an item click operation on the specified list adapter position.
-     * 
+     *
      * @param position Adapter position for performing the click
      * @return true if the click action could be performed, false if not.
      *         (e.g. if the popup was not showing, this method would return false.)
@@ -817,7 +817,7 @@
     /**
      * @return The position of the currently selected item or {@link ListView#INVALID_POSITION}
      * if {@link #isShowing()} == {@code false}.
-     * 
+     *
      * @see ListView#getSelectedItemPosition()
      */
     public int getSelectedItemPosition() {
@@ -830,7 +830,7 @@
     /**
      * @return The ID of the currently selected item or {@link ListView#INVALID_ROW_ID}
      * if {@link #isShowing()} == {@code false}.
-     * 
+     *
      * @see ListView#getSelectedItemId()
      */
     public long getSelectedItemId() {
@@ -843,7 +843,7 @@
     /**
      * @return The View for the currently selected item or null if
      * {@link #isShowing()} == {@code false}.
-     * 
+     *
      * @see ListView#getSelectedView()
      */
     public @Nullable View getSelectedView() {
@@ -904,7 +904,7 @@
                 final boolean below = !mPopup.isAboveAnchor();
 
                 final ListAdapter adapter = mAdapter;
-                
+
                 boolean allEnabled;
                 int firstItem = Integer.MAX_VALUE;
                 int lastItem = Integer.MIN_VALUE;
@@ -914,9 +914,9 @@
                     firstItem = allEnabled ? 0 :
                             mDropDownList.lookForSelectablePosition(0, true);
                     lastItem = allEnabled ? adapter.getCount() - 1 :
-                            mDropDownList.lookForSelectablePosition(adapter.getCount() - 1, false);                    
+                            mDropDownList.lookForSelectablePosition(adapter.getCount() - 1, false);
                 }
-                
+
                 if ((below && keyCode == KeyEvent.KEYCODE_DPAD_UP && curIndex <= firstItem) ||
                         (!below && keyCode == KeyEvent.KEYCODE_DPAD_DOWN && curIndex >= lastItem)) {
                     // When the selection is at the top, we block the key
@@ -1132,18 +1132,18 @@
                 LinearLayout.LayoutParams hintParams = new LinearLayout.LayoutParams(
                         ViewGroup.LayoutParams.MATCH_PARENT, 0, 1.0f
                 );
-                
+
                 switch (mPromptPosition) {
                 case POSITION_PROMPT_BELOW:
                     hintContainer.addView(dropDownView, hintParams);
                     hintContainer.addView(hintView);
                     break;
-                    
+
                 case POSITION_PROMPT_ABOVE:
                     hintContainer.addView(hintView);
                     hintContainer.addView(dropDownView, hintParams);
                     break;
-                    
+
                 default:
                     Log.e(TAG, "Invalid hint position " + mPromptPosition);
                     break;
@@ -1249,7 +1249,7 @@
                 show();
             }
         }
-        
+
         @Override
         public void onInvalidated() {
             dismiss();
@@ -1278,7 +1278,7 @@
             final int action = event.getAction();
             final int x = (int) event.getX();
             final int y = (int) event.getY();
-            
+
             if (action == MotionEvent.ACTION_DOWN &&
                     mPopup != null && mPopup.isShowing() &&
                     (x >= 0 && x < mPopup.getWidth() && y >= 0 && y < mPopup.getHeight())) {
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index b0f19d7..e88c7ef 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -16,11 +16,6 @@
 
 package android.widget;
 
-import com.google.android.collect.Lists;
-
-import com.android.internal.R;
-import com.android.internal.util.Predicate;
-
 import android.annotation.IdRes;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -53,6 +48,11 @@
 import android.view.accessibility.AccessibilityNodeProvider;
 import android.widget.RemoteViews.RemoteView;
 
+import com.android.internal.R;
+import com.android.internal.util.Predicate;
+
+import com.google.android.collect.Lists;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -464,7 +464,7 @@
      *        data backing this list and for producing a view to represent an
      *        item in that data set.
      *
-     * @see #getAdapter() 
+     * @see #getAdapter()
      */
     @Override
     public void setAdapter(ListAdapter adapter) {
@@ -1532,7 +1532,7 @@
                         adjustViewsUpOrDown();
                     }
                 } else if (lastPosition == mItemCount - 1) {
-                    adjustViewsUpOrDown();                    
+                    adjustViewsUpOrDown();
                 }
             }
         }
@@ -1857,7 +1857,7 @@
                     && focusLayoutRestoreView.getWindowToken() != null) {
                 focusLayoutRestoreView.dispatchFinishTemporaryDetach();
             }
-            
+
             mLayoutMode = LAYOUT_NORMAL;
             mDataChanged = false;
             if (mPositionScrollAfterLayout != null) {
@@ -2109,7 +2109,7 @@
 
     /**
      * Makes the item at the supplied position selected.
-     * 
+     *
      * @param position the position of the item to select
      */
     @Override
@@ -2960,7 +2960,7 @@
             if (startPos < firstPosition) {
                 startPos = firstPosition;
             }
-            
+
             final int lastVisiblePos = getLastVisiblePosition();
             final ListAdapter adapter = getAdapter();
             for (int pos = startPos; pos <= lastVisiblePos; pos++) {
@@ -3129,7 +3129,7 @@
     /**
      * Determine the distance to the nearest edge of a view in a particular
      * direction.
-     * 
+     *
      * @param descendant A descendant of this list.
      * @return The distance, or 0 if the nearest edge is already on screen.
      */
@@ -3386,7 +3386,7 @@
             final int listBottom = mBottom - mTop - effectivePaddingBottom + mScrollY;
             if (!mStackFromBottom) {
                 int bottom = 0;
-                
+
                 // Draw top divider or header for overscroll
                 final int scrollY = mScrollY;
                 if (count > 0 && scrollY < 0) {
@@ -3483,7 +3483,7 @@
                         }
                     }
                 }
-                
+
                 if (count > 0 && scrollY > 0) {
                     if (drawOverscrollFooter) {
                         final int absListBottom = mBottom;
@@ -3567,7 +3567,7 @@
     public int getDividerHeight() {
         return mDividerHeight;
     }
-    
+
     /**
      * Sets the height of the divider that will be drawn between each item in the list. Calling
      * this will override the intrinsic height as set by {@link #setDivider(Drawable)}
@@ -3625,7 +3625,7 @@
     public boolean areFooterDividersEnabled() {
         return mFooterDividersEnabled;
     }
-    
+
     /**
      * Sets the drawable that will be drawn above all other list content.
      * This area can become visible when the user overscrolls the list.
@@ -3878,10 +3878,10 @@
     /**
      * Returns the set of checked items ids. The result is only valid if the
      * choice mode has not been set to {@link #CHOICE_MODE_NONE}.
-     * 
+     *
      * @return A new array which contains the id of each checked item in the
      *         list.
-     *         
+     *
      * @deprecated Use {@link #getCheckedItemIds()} instead.
      */
     @Deprecated
diff --git a/core/java/android/widget/MenuItemHoverListener.java b/core/java/android/widget/MenuItemHoverListener.java
index 13f0e6a..835e4cd 100644
--- a/core/java/android/widget/MenuItemHoverListener.java
+++ b/core/java/android/widget/MenuItemHoverListener.java
@@ -1,10 +1,10 @@
 package android.widget;
 
-import com.android.internal.view.menu.MenuBuilder;
-
 import android.annotation.NonNull;
 import android.view.MenuItem;
 
+import com.android.internal.view.menu.MenuBuilder;
+
 /**
  * An interface notified when a menu item is hovered. Useful for cases when hover should trigger
  * some behavior at a higher level, like managing the opening and closing of submenus.
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index 72b2e31..662e640 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.CallSuper;
 import android.annotation.IntDef;
 import android.annotation.TestApi;
@@ -32,12 +30,10 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.text.Editable;
 import android.text.InputFilter;
 import android.text.InputType;
 import android.text.Spanned;
 import android.text.TextUtils;
-import android.text.TextWatcher;
 import android.text.method.NumberKeyListener;
 import android.util.AttributeSet;
 import android.util.SparseArray;
@@ -57,6 +53,10 @@
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
 
+import com.android.internal.R;
+
+import libcore.icu.LocaleData;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -64,8 +64,6 @@
 import java.util.List;
 import java.util.Locale;
 
-import libcore.icu.LocaleData;
-
 /**
  * A widget that enables the user to select a number from a predefined range.
  * There are two flavors of this widget and which one is presented to the user
diff --git a/core/java/android/widget/PopupMenu.java b/core/java/android/widget/PopupMenu.java
index 027f874..eb27533 100644
--- a/core/java/android/widget/PopupMenu.java
+++ b/core/java/android/widget/PopupMenu.java
@@ -16,11 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-import com.android.internal.view.menu.MenuBuilder;
-import com.android.internal.view.menu.MenuPopupHelper;
-import com.android.internal.view.menu.ShowableListMenu;
-
 import android.annotation.MenuRes;
 import android.content.Context;
 import android.view.Gravity;
@@ -30,6 +25,11 @@
 import android.view.View;
 import android.view.View.OnTouchListener;
 
+import com.android.internal.R;
+import com.android.internal.view.menu.MenuBuilder;
+import com.android.internal.view.menu.MenuPopupHelper;
+import com.android.internal.view.menu.ShowableListMenu;
+
 /**
  * A PopupMenu displays a {@link Menu} in a modal popup window anchored to a
  * {@link View}. The popup will appear below the anchor view if there is room,
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index 5e73a63..fc1520b 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -16,7 +16,11 @@
 
 package android.widget;
 
-import com.android.internal.R;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
+import static android.view.WindowManager.LayoutParams
+        .PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME;
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_WILL_NOT_REPLACE_ON_RELAUNCH;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -50,12 +54,9 @@
 import android.view.WindowManager;
 import android.view.WindowManager.LayoutParams;
 
-import java.lang.ref.WeakReference;
+import com.android.internal.R;
 
-import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME;
-import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_WILL_NOT_REPLACE_ON_RELAUNCH;
-import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
-import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
+import java.lang.ref.WeakReference;
 
 /**
  * <p>
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index 1f379c9..266ff75 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -22,9 +22,7 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
-import android.content.res.Resources;
 import android.content.res.TypedArray;
-import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.PorterDuff;
 import android.graphics.Rect;
@@ -60,6 +58,7 @@
 import android.view.animation.LinearInterpolator;
 import android.view.animation.Transformation;
 import android.widget.RemoteViews.RemoteView;
+
 import com.android.internal.R;
 
 import java.util.ArrayList;
@@ -186,6 +185,7 @@
  * @attr ref android.R.styleable#ProgressBar_indeterminateDuration
  * @attr ref android.R.styleable#ProgressBar_indeterminateOnly
  * @attr ref android.R.styleable#ProgressBar_interpolator
+ * @attr ref android.R.styleable#ProgressBar_min
  * @attr ref android.R.styleable#ProgressBar_max
  * @attr ref android.R.styleable#ProgressBar_maxHeight
  * @attr ref android.R.styleable#ProgressBar_maxWidth
@@ -216,7 +216,10 @@
 
     private int mProgress;
     private int mSecondaryProgress;
+    private int mMin;
+    private boolean mMinInitialized;
     private int mMax;
+    private boolean mMaxInitialized;
 
     private int mBehavior;
     private int mDuration;
@@ -309,6 +312,7 @@
             setInterpolator(context, resID);
         }
 
+        setMin(a.getInt(R.styleable.ProgressBar_min, mMin));
         setMax(a.getInt(R.styleable.ProgressBar_max, mMax));
 
         setProgress(a.getInt(R.styleable.ProgressBar_progress, mProgress));
@@ -565,6 +569,7 @@
      * </ul>
      */
     private void initProgressBar() {
+        mMin = 0;
         mMax = 100;
         mProgress = 0;
         mSecondaryProgress = 0;
@@ -1310,7 +1315,8 @@
 
     private synchronized void doRefreshProgress(int id, int progress, boolean fromUser,
             boolean callBackToApp, boolean animate) {
-        final float scale = mMax > 0 ? progress / (float) mMax : 0;
+        int range = mMax - mMin;
+        final float scale = range > 0 ? (progress - mMin) / (float) range : 0;
         final boolean isPrimary = id == R.id.progress;
 
         if (isPrimary && animate) {
@@ -1436,7 +1442,7 @@
             return false;
         }
 
-        progress = MathUtils.constrain(progress, 0, mMax);
+        progress = MathUtils.constrain(progress, mMin, mMax);
 
         if (progress == mProgress) {
             // No change from current.
@@ -1466,8 +1472,8 @@
             return;
         }
 
-        if (secondaryProgress < 0) {
-            secondaryProgress = 0;
+        if (secondaryProgress < mMin) {
+            secondaryProgress = mMin;
         }
 
         if (secondaryProgress > mMax) {
@@ -1515,6 +1521,20 @@
     }
 
     /**
+     * <p>Return the lower limit of this progress bar's range.</p>
+     *
+     * @return a positive integer
+     *
+     * @see #setMin(int)
+     * @see #getProgress()
+     * @see #getSecondaryProgress()
+     */
+    @ViewDebug.ExportedProperty(category = "progress")
+    public synchronized int getMin() {
+        return mMin;
+    }
+
+    /**
      * <p>Return the upper limit of this progress bar's range.</p>
      *
      * @return a positive integer
@@ -1529,7 +1549,37 @@
     }
 
     /**
-     * <p>Set the range of the progress bar to 0...<tt>max</tt>.</p>
+     * <p>Set the lower range of the progress bar to <tt>min</tt>.</p>
+     *
+     * @param min the lower range of this progress bar
+     *
+     * @see #getMin()
+     * @see #setProgress(int)
+     * @see #setSecondaryProgress(int)
+     */
+    @android.view.RemotableViewMethod
+    public synchronized void setMin(int min) {
+        if (mMaxInitialized) {
+            if (min > mMax) {
+                min = mMax;
+            }
+        }
+        mMinInitialized = true;
+        if (mMaxInitialized && min != mMin) {
+            mMin = min;
+            postInvalidate();
+
+            if (mProgress < min) {
+                mProgress = min;
+            }
+            refreshProgress(R.id.progress, mProgress, false, false);
+        } else {
+            mMin = min;
+        }
+    }
+
+    /**
+     * <p>Set the upper range of the progress bar <tt>max</tt>.</p>
      *
      * @param max the upper range of this progress bar
      *
@@ -1539,10 +1589,13 @@
      */
     @android.view.RemotableViewMethod
     public synchronized void setMax(int max) {
-        if (max < 0) {
-            max = 0;
+        if (mMinInitialized) {
+            if (max < mMin) {
+                max = mMin;
+            }
         }
-        if (max != mMax) {
+        mMaxInitialized = true;
+        if (mMinInitialized && max != mMax) {
             mMax = max;
             postInvalidate();
 
@@ -1550,6 +1603,8 @@
                 mProgress = max;
             }
             refreshProgress(R.id.progress, mProgress, false, false);
+        } else {
+            mMax = max;
         }
     }
 
@@ -1959,7 +2014,7 @@
     @Override
     public void onInitializeAccessibilityEventInternal(AccessibilityEvent event) {
         super.onInitializeAccessibilityEventInternal(event);
-        event.setItemCount(mMax);
+        event.setItemCount(mMax - mMin);
         event.setCurrentItemIndex(mProgress);
     }
 
diff --git a/core/java/android/widget/QuickContactBadge.java b/core/java/android/widget/QuickContactBadge.java
index 8c15cde..8f6b0d5 100644
--- a/core/java/android/widget/QuickContactBadge.java
+++ b/core/java/android/widget/QuickContactBadge.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.content.AsyncQueryHandler;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -38,6 +36,8 @@
 import android.view.View;
 import android.view.View.OnClickListener;
 
+import com.android.internal.R;
+
 /**
  * Widget used to show an image with the standard QuickContact badge
  * and on-click behavior.
diff --git a/core/java/android/widget/RadialTimePickerView.java b/core/java/android/widget/RadialTimePickerView.java
index 5a0e1f9..757a4ca 100644
--- a/core/java/android/widget/RadialTimePickerView.java
+++ b/core/java/android/widget/RadialTimePickerView.java
@@ -16,10 +16,6 @@
 
 package android.widget;
 
-import android.view.PointerIcon;
-import com.android.internal.R;
-import com.android.internal.widget.ExploreByTouchHelper;
-
 import android.animation.ObjectAnimator;
 import android.annotation.IntDef;
 import android.content.Context;
@@ -43,11 +39,15 @@
 import android.util.TypedValue;
 import android.view.HapticFeedbackConstants;
 import android.view.MotionEvent;
+import android.view.PointerIcon;
 import android.view.View;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
 
+import com.android.internal.R;
+import com.android.internal.widget.ExploreByTouchHelper;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Calendar;
diff --git a/core/java/android/widget/RadioGroup.java b/core/java/android/widget/RadioGroup.java
index 065feb8..54b5763 100644
--- a/core/java/android/widget/RadioGroup.java
+++ b/core/java/android/widget/RadioGroup.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.IdRes;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -25,6 +23,8 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.R;
+
 
 /**
  * <p>This class is used to create a multiple-exclusion scope for a set of radio
@@ -39,14 +39,14 @@
  * in the XML layout file.</p>
  *
  * <p><strong>XML Attributes</strong></p>
- * <p>See {@link android.R.styleable#RadioGroup RadioGroup Attributes}, 
+ * <p>See {@link android.R.styleable#RadioGroup RadioGroup Attributes},
  * {@link android.R.styleable#LinearLayout LinearLayout Attributes},
  * {@link android.R.styleable#ViewGroup ViewGroup Attributes},
  * {@link android.R.styleable#View View Attributes}</p>
  * <p>Also see
  * {@link android.widget.LinearLayout.LayoutParams LinearLayout.LayoutParams}
  * for layout attributes.</p>
- * 
+ *
  * @see RadioButton
  *
  */
@@ -310,7 +310,7 @@
             } else {
                 width = WRAP_CONTENT;
             }
-            
+
             if (a.hasValue(heightAttr)) {
                 height = a.getLayoutDimension(heightAttr, "layout_height");
             } else {
diff --git a/core/java/android/widget/RatingBar.java b/core/java/android/widget/RatingBar.java
index 62dd90f..3b7fe86 100644
--- a/core/java/android/widget/RatingBar.java
+++ b/core/java/android/widget/RatingBar.java
@@ -22,6 +22,7 @@
 import android.graphics.drawable.shapes.Shape;
 import android.util.AttributeSet;
 import android.view.accessibility.AccessibilityNodeInfo;
+
 import com.android.internal.R;
 
 /**
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index a189d3c..b424101 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -16,20 +16,14 @@
 
 package android.widget;
 
+import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
+
 import android.annotation.NonNull;
-import android.util.ArrayMap;
-import com.android.internal.R;
-
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Rect;
 import android.os.Build;
+import android.util.ArrayMap;
 import android.util.AttributeSet;
 import android.util.Pools.SynchronizedPool;
 import android.util.SparseArray;
@@ -41,7 +35,13 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.RemoteViews.RemoteView;
 
-import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
+import com.android.internal.R;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 /**
  * A Layout where the positions of the children can be described in relation to each other or to the
@@ -209,7 +209,7 @@
     private int mIgnoreGravity;
 
     private SortedSet<View> mTopToBottomLeftToRightSet = null;
-    
+
     private boolean mDirtyHierarchy;
     private View[] mSortedHorizontalChildren;
     private View[] mSortedVerticalChildren;
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 2a6e01f..6543d0c 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -59,11 +59,12 @@
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.AdapterView.OnItemClickListener;
-import libcore.util.Objects;
 
 import com.android.internal.R;
 import com.android.internal.util.Preconditions;
 
+import libcore.util.Objects;
+
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java
index 10abbab..e0f94fd 100644
--- a/core/java/android/widget/RemoteViewsAdapter.java
+++ b/core/java/android/widget/RemoteViewsAdapter.java
@@ -16,13 +16,6 @@
 
 package android.widget;
 
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-
 import android.Manifest;
 import android.appwidget.AppWidgetHostView;
 import android.appwidget.AppWidgetManager;
@@ -48,6 +41,11 @@
 import com.android.internal.widget.IRemoteViewsAdapterConnection;
 import com.android.internal.widget.IRemoteViewsFactory;
 
+import java.lang.ref.WeakReference;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedList;
+
 /**
  * An adapter to a RemoteViewsService which fetches and caches RemoteViews
  * to be later inflated as child views.
diff --git a/core/java/android/widget/RemoteViewsService.java b/core/java/android/widget/RemoteViewsService.java
index 07bd918..2827f63 100644
--- a/core/java/android/widget/RemoteViewsService.java
+++ b/core/java/android/widget/RemoteViewsService.java
@@ -16,14 +16,14 @@
 
 package android.widget;
 
-import java.util.HashMap;
-
 import android.app.Service;
 import android.content.Intent;
 import android.os.IBinder;
 
 import com.android.internal.widget.IRemoteViewsFactory;
 
+import java.util.HashMap;
+
 /**
  * The service to be connected to for a remote adapter to request RemoteViews.  Users should
  * extend the RemoteViewsService to provide the appropriate RemoteViewsFactory's used to
@@ -46,7 +46,7 @@
      * An interface for an adapter between a remote collection view (ListView, GridView, etc) and
      * the underlying data for that view.  The implementor is responsible for making a RemoteView
      * for each item in the data set. This interface is a thin wrapper around {@link Adapter}.
-     * 
+     *
      * @see android.widget.Adapter
      * @see android.appwidget.AppWidgetManager
      */
diff --git a/core/java/android/widget/ResourceCursorAdapter.java b/core/java/android/widget/ResourceCursorAdapter.java
index 100f919..9732bb1 100644
--- a/core/java/android/widget/ResourceCursorAdapter.java
+++ b/core/java/android/widget/ResourceCursorAdapter.java
@@ -20,9 +20,9 @@
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.view.ContextThemeWrapper;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.LayoutInflater;
 
 
 /**
@@ -148,7 +148,7 @@
     public void setViewResource(int layout) {
         mLayout = layout;
     }
-    
+
     /**
      * <p>Sets the layout resource of the drop down views.</p>
      *
diff --git a/core/java/android/widget/ResourceCursorTreeAdapter.java b/core/java/android/widget/ResourceCursorTreeAdapter.java
index ddce515..0894dba 100644
--- a/core/java/android/widget/ResourceCursorTreeAdapter.java
+++ b/core/java/android/widget/ResourceCursorTreeAdapter.java
@@ -18,9 +18,9 @@
 
 import android.content.Context;
 import android.database.Cursor;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.LayoutInflater;
 
 /**
  * A fairly simple ExpandableListAdapter that creates views defined in an XML
@@ -32,10 +32,10 @@
     private int mChildLayout;
     private int mLastChildLayout;
     private LayoutInflater mInflater;
-    
+
     /**
      * Constructor.
-     * 
+     *
      * @param context The context where the ListView associated with this
      *            SimpleListItemFactory is running
      * @param cursor The database cursor
@@ -51,18 +51,18 @@
     public ResourceCursorTreeAdapter(Context context, Cursor cursor, int collapsedGroupLayout,
             int expandedGroupLayout, int childLayout, int lastChildLayout) {
         super(cursor, context);
-        
+
         mCollapsedGroupLayout = collapsedGroupLayout;
         mExpandedGroupLayout = expandedGroupLayout;
         mChildLayout = childLayout;
         mLastChildLayout = lastChildLayout;
-        
+
         mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     }
 
     /**
      * Constructor.
-     * 
+     *
      * @param context The context where the ListView associated with this
      *            SimpleListItemFactory is running
      * @param cursor The database cursor
@@ -80,7 +80,7 @@
 
     /**
      * Constructor.
-     * 
+     *
      * @param context The context where the ListView associated with this
      *            SimpleListItemFactory is running
      * @param cursor The database cursor
@@ -93,7 +93,7 @@
             int childLayout) {
         this(context, cursor, groupLayout, groupLayout, childLayout, childLayout);
     }
-    
+
     @Override
     public View newChildView(Context context, Cursor cursor, boolean isLastChild,
             ViewGroup parent) {
diff --git a/core/java/android/widget/ScrollBarDrawable.java b/core/java/android/widget/ScrollBarDrawable.java
index 11eab2a..2ae38c9 100644
--- a/core/java/android/widget/ScrollBarDrawable.java
+++ b/core/java/android/widget/ScrollBarDrawable.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.widget.ScrollBarUtils;
-
 import android.annotation.NonNull;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
@@ -25,6 +23,8 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 
+import com.android.internal.widget.ScrollBarUtils;
+
 /**
  * This is only used by View for displaying its scroll bars. It should probably
  * be moved in to the view package since it is used in that lower-level layer.
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index e696ff7..d8f3379 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -17,18 +17,16 @@
 package android.widget;
 
 import android.annotation.NonNull;
-import android.content.res.Configuration;
-import android.os.Build;
-import android.os.Build.VERSION_CODES;
-import android.os.Parcel;
-import android.os.Parcelable;
-import com.android.internal.R;
-
 import android.content.Context;
+import android.content.res.Configuration;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Rect;
+import android.os.Build;
+import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
 import android.os.StrictMode;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -47,6 +45,8 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.animation.AnimationUtils;
 
+import com.android.internal.R;
+
 import java.util.List;
 
 /**
diff --git a/core/java/android/widget/SeekBar.java b/core/java/android/widget/SeekBar.java
index 5d01d8d..f9aced0 100644
--- a/core/java/android/widget/SeekBar.java
+++ b/core/java/android/widget/SeekBar.java
@@ -46,8 +46,10 @@
          * to distinguish user-initiated changes from those that occurred programmatically.
          *
          * @param seekBar The SeekBar whose progress has changed
-         * @param progress The current progress level. This will be in the range 0..max where max
-         *        was set by {@link ProgressBar#setMax(int)}. (The default value for max is 100.)
+         * @param progress The current progress level. This will be in the range min..max where min
+         *                 and max were set by {@link ProgressBar#setMin(int)} and
+         *                 {@link ProgressBar#setMax(int)}, respectively. (The default values for
+         *                 min is 0 and max is 100.)
          * @param fromUser True if the progress change was initiated by the user.
          */
         void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser);
diff --git a/core/java/android/widget/SimpleAdapter.java b/core/java/android/widget/SimpleAdapter.java
index 3bf9485..9190117 100644
--- a/core/java/android/widget/SimpleAdapter.java
+++ b/core/java/android/widget/SimpleAdapter.java
@@ -20,11 +20,11 @@
 import android.annotation.LayoutRes;
 import android.content.Context;
 import android.content.res.Resources;
+import android.net.Uri;
 import android.view.ContextThemeWrapper;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.LayoutInflater;
-import android.net.Uri;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -40,7 +40,7 @@
  * Binding data to views occurs in two phases. First, if a
  * {@link android.widget.SimpleAdapter.ViewBinder} is available,
  * {@link ViewBinder#setViewValue(android.view.View, Object, String)}
- * is invoked. If the returned value is true, binding has occurred. 
+ * is invoked. If the returned value is true, binding has occurred.
  * If the returned value is false, the following views are then tried in order:
  * <ul>
  * <li> A view that implements Checkable (e.g. CheckBox).  The expected bind value is a boolean.
@@ -223,7 +223,7 @@
                         setViewText((TextView) v, text);
                     } else if (v instanceof ImageView) {
                         if (data instanceof Integer) {
-                            setViewImage((ImageView) v, (Integer) data);                            
+                            setViewImage((ImageView) v, (Integer) data);
                         } else {
                             setViewImage((ImageView) v, text);
                         }
@@ -291,7 +291,7 @@
      * @param v ImageView to receive an image
      * @param value the value retrieved from the data set
      *
-     * @see #setViewImage(ImageView, int) 
+     * @see #setViewImage(ImageView, int)
      */
     public void setViewImage(ImageView v, String value) {
         try {
@@ -381,18 +381,18 @@
                 for (int i = 0; i < count; i++) {
                     Map<String, ?> h = unfilteredValues.get(i);
                     if (h != null) {
-                        
+
                         int len = mTo.length;
 
                         for (int j=0; j<len; j++) {
                             String str =  (String)h.get(mFrom[j]);
-                            
+
                             String[] words = str.split(" ");
                             int wordCount = words.length;
-                            
+
                             for (int k = 0; k < wordCount; k++) {
                                 String word = words[k];
-                                
+
                                 if (word.toLowerCase().startsWith(prefixString)) {
                                     newValues.add(h);
                                     break;
diff --git a/core/java/android/widget/SimpleExpandableListAdapter.java b/core/java/android/widget/SimpleExpandableListAdapter.java
index 015c169..597502b 100644
--- a/core/java/android/widget/SimpleExpandableListAdapter.java
+++ b/core/java/android/widget/SimpleExpandableListAdapter.java
@@ -17,9 +17,9 @@
 package android.widget;
 
 import android.content.Context;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.LayoutInflater;
 
 import java.util.List;
 import java.util.Map;
@@ -42,18 +42,18 @@
     private int mCollapsedGroupLayout;
     private String[] mGroupFrom;
     private int[] mGroupTo;
-    
+
     private List<? extends List<? extends Map<String, ?>>> mChildData;
     private int mChildLayout;
     private int mLastChildLayout;
     private String[] mChildFrom;
     private int[] mChildTo;
-    
+
     private LayoutInflater mInflater;
-    
+
     /**
      * Constructor
-     * 
+     *
      * @param context The context where the {@link ExpandableListView}
      *            associated with this {@link SimpleExpandableListAdapter} is
      *            running
@@ -98,7 +98,7 @@
 
     /**
      * Constructor
-     * 
+     *
      * @param context The context where the {@link ExpandableListView}
      *            associated with this {@link SimpleExpandableListAdapter} is
      *            running
@@ -147,7 +147,7 @@
 
     /**
      * Constructor
-     * 
+     *
      * @param context The context where the {@link ExpandableListView}
      *            associated with this {@link SimpleExpandableListAdapter} is
      *            running
@@ -200,16 +200,16 @@
         mCollapsedGroupLayout = collapsedGroupLayout;
         mGroupFrom = groupFrom;
         mGroupTo = groupTo;
-        
+
         mChildData = childData;
         mChildLayout = childLayout;
         mLastChildLayout = lastChildLayout;
         mChildFrom = childFrom;
         mChildTo = childTo;
-        
+
         mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     }
-    
+
     public Object getChild(int groupPosition, int childPosition) {
         return mChildData.get(groupPosition).get(childPosition);
     }
@@ -239,7 +239,7 @@
     public View newChildView(boolean isLastChild, ViewGroup parent) {
         return mInflater.inflate((isLastChild) ? mLastChildLayout : mChildLayout, parent, false);
     }
-    
+
     private void bindView(View view, Map<String, ?> data, String[] from, int[] to) {
         int len = to.length;
 
diff --git a/core/java/android/widget/SimpleMonthView.java b/core/java/android/widget/SimpleMonthView.java
index 8c43782..855d1d2 100644
--- a/core/java/android/widget/SimpleMonthView.java
+++ b/core/java/android/widget/SimpleMonthView.java
@@ -16,10 +16,6 @@
 
 package android.widget;
 
-import android.view.PointerIcon;
-import com.android.internal.R;
-import com.android.internal.widget.ExploreByTouchHelper;
-
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
@@ -43,17 +39,21 @@
 import android.util.StateSet;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
+import android.view.PointerIcon;
 import android.view.View;
 import android.view.ViewParent;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
 
-import java.text.NumberFormat;
-import java.util.Locale;
+import com.android.internal.R;
+import com.android.internal.widget.ExploreByTouchHelper;
 
 import libcore.icu.LocaleData;
 
+import java.text.NumberFormat;
+import java.util.Locale;
+
 /**
  * A calendar-like view displaying a specified month and the appropriate selectable day numbers
  * within the specified month.
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index dc5e5a2..28cc693 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -16,13 +16,9 @@
 
 package android.widget;
 
-import android.annotation.TestApi;
-import android.view.PointerIcon;
-import com.android.internal.R;
-import com.android.internal.view.menu.ShowableListMenu;
-
 import android.annotation.DrawableRes;
 import android.annotation.Nullable;
+import android.annotation.TestApi;
 import android.annotation.Widget;
 import android.app.AlertDialog;
 import android.content.Context;
@@ -42,6 +38,7 @@
 import android.view.ContextThemeWrapper;
 import android.view.Gravity;
 import android.view.MotionEvent;
+import android.view.PointerIcon;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
@@ -49,6 +46,9 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.PopupWindow.OnDismissListener;
 
+import com.android.internal.R;
+import com.android.internal.view.menu.ShowableListMenu;
+
 /**
  * A view that displays one child at a time and lets the user pick among them.
  * The items in the Spinner come from the {@link Adapter} associated with
@@ -123,7 +123,7 @@
      *                access the current theme, resources, etc.
      * @param mode Constant describing how the user will select choices from
      *             the spinner.
-     * 
+     *
      * @see #MODE_DIALOG
      * @see #MODE_DROPDOWN
      */
@@ -563,7 +563,7 @@
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
-        
+
         if (mPopup != null && mPopup.isShowing()) {
             mPopup.dismiss();
         }
@@ -772,7 +772,7 @@
     @Override
     public boolean performClick() {
         boolean handled = super.performClick();
-        
+
         if (!handled) {
             handled = true;
 
@@ -1011,7 +1011,7 @@
 
         /**
          * If the wrapped SpinnerAdapter is also a ListAdapter, delegate this call.
-         * Otherwise, return true. 
+         * Otherwise, return true.
          */
         public boolean areAllItemsEnabled() {
             final ListAdapter adapter = mListAdapter;
@@ -1042,19 +1042,19 @@
         public int getViewTypeCount() {
             return 1;
         }
-        
+
         public boolean isEmpty() {
             return getCount() == 0;
         }
     }
-    
+
     /**
      * Implements some sort of popup selection interface for selecting a spinner option.
      * Allows for different spinner modes.
      */
     private interface SpinnerPopup {
         public void setAdapter(ListAdapter adapter);
-        
+
         /**
          * Show the popup
          */
@@ -1064,12 +1064,12 @@
          * Dismiss the popup
          */
         public void dismiss();
-        
+
         /**
          * @return true if the popup is showing, false otherwise.
          */
         public boolean isShowing();
-        
+
         /**
          * Set hint text to be displayed to the user. This should provide
          * a description of the choice being made.
@@ -1129,7 +1129,7 @@
             listView.setTextAlignment(textAlignment);
             mPopup.show();
         }
-        
+
         public void onClick(DialogInterface dialog, int which) {
             setSelection(which);
             if (mOnItemClickListener != null) {
@@ -1168,7 +1168,7 @@
             return 0;
         }
     }
-    
+
     private class DropdownPopup extends ListPopupWindow implements SpinnerPopup {
         private CharSequence mHintText;
         private ListAdapter mAdapter;
@@ -1190,7 +1190,7 @@
                 }
             });
         }
-        
+
         @Override
         public void setAdapter(ListAdapter adapter) {
             super.setAdapter(adapter);
@@ -1200,7 +1200,7 @@
         public CharSequence getHintText() {
             return mHintText;
         }
-        
+
         public void setPromptText(CharSequence hintText) {
             // Hint text is ignored for dropdowns, but maintain it here.
             mHintText = hintText;
diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java
index 2bd3143..0e99c02 100644
--- a/core/java/android/widget/StackView.java
+++ b/core/java/android/widget/StackView.java
@@ -15,8 +15,6 @@
 
 package android.widget;
 
-import java.lang.ref.WeakReference;
-
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
 import android.content.Context;
@@ -45,6 +43,8 @@
 import android.view.animation.LinearInterpolator;
 import android.widget.RemoteViews.RemoteView;
 
+import java.lang.ref.WeakReference;
+
 @RemoteView
 /**
  * A view that displays its children in a stack and allows users to discretely swipe
@@ -670,12 +670,12 @@
                 activeIndex = (swipeGestureType == GESTURE_SLIDE_DOWN) ? 1 : 0;
             }
 
-            boolean endOfStack = mLoopViews && adapterCount == 1 && 
-                ((mStackMode == ITEMS_SLIDE_UP && swipeGestureType == GESTURE_SLIDE_UP) ||
-                 (mStackMode == ITEMS_SLIDE_DOWN && swipeGestureType == GESTURE_SLIDE_DOWN));
-            boolean beginningOfStack = mLoopViews && adapterCount == 1 && 
-                ((mStackMode == ITEMS_SLIDE_DOWN && swipeGestureType == GESTURE_SLIDE_UP) ||
-                 (mStackMode == ITEMS_SLIDE_UP && swipeGestureType == GESTURE_SLIDE_DOWN));
+            boolean endOfStack = mLoopViews && adapterCount == 1
+                    && ((mStackMode == ITEMS_SLIDE_UP && swipeGestureType == GESTURE_SLIDE_UP)
+                    || (mStackMode == ITEMS_SLIDE_DOWN && swipeGestureType == GESTURE_SLIDE_DOWN));
+            boolean beginningOfStack = mLoopViews && adapterCount == 1
+                    && ((mStackMode == ITEMS_SLIDE_DOWN && swipeGestureType == GESTURE_SLIDE_UP)
+                    || (mStackMode == ITEMS_SLIDE_UP && swipeGestureType == GESTURE_SLIDE_DOWN));
 
             int stackMode;
             if (mLoopViews && !beginningOfStack && !endOfStack) {
diff --git a/core/java/android/widget/SuggestionsAdapter.java b/core/java/android/widget/SuggestionsAdapter.java
index aad0625..f833d1b 100644
--- a/core/java/android/widget/SuggestionsAdapter.java
+++ b/core/java/android/widget/SuggestionsAdapter.java
@@ -21,8 +21,8 @@
 import android.app.SearchableInfo;
 import android.content.ComponentName;
 import android.content.ContentResolver;
-import android.content.Context;
 import android.content.ContentResolver.OpenResourceIdResult;
+import android.content.Context;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -39,8 +39,8 @@
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.View.OnClickListener;
+import android.view.ViewGroup;
 
 import com.android.internal.R;
 
@@ -111,7 +111,7 @@
         mProviderContext = mSearchable.getProviderContext(mContext, activityContext);
 
         mOutsideDrawablesCache = outsideDrawablesCache;
-        
+
         // mStartSpinnerRunnable = new Runnable() {
         // public void run() {
         // // mSearchView.setWorking(true); // TODO:
diff --git a/core/java/android/widget/Switch.java b/core/java/android/widget/Switch.java
index d51c5be..fcc1667 100644
--- a/core/java/android/widget/Switch.java
+++ b/core/java/android/widget/Switch.java
@@ -30,8 +30,8 @@
 import android.graphics.Paint;
 import android.graphics.PorterDuff;
 import android.graphics.Rect;
-import android.graphics.Typeface;
 import android.graphics.Region.Op;
+import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.text.Layout;
 import android.text.StaticLayout;
@@ -46,8 +46,8 @@
 import android.view.MotionEvent;
 import android.view.SoundEffectConstants;
 import android.view.VelocityTracker;
-import android.view.ViewStructure;
 import android.view.ViewConfiguration;
+import android.view.ViewStructure;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 
diff --git a/core/java/android/widget/TabHost.java b/core/java/android/widget/TabHost.java
index 583f037..32418cd 100644
--- a/core/java/android/widget/TabHost.java
+++ b/core/java/android/widget/TabHost.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.LocalActivityManager;
@@ -35,6 +33,9 @@
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
 import android.view.Window;
+
+import com.android.internal.R;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java
index 1f0cb7c..05f7c0a 100644
--- a/core/java/android/widget/TabWidget.java
+++ b/core/java/android/widget/TabWidget.java
@@ -16,10 +16,6 @@
 
 package android.widget;
 
-import android.view.MotionEvent;
-import android.view.PointerIcon;
-import com.android.internal.R;
-
 import android.annotation.DrawableRes;
 import android.annotation.Nullable;
 import android.content.Context;
@@ -29,11 +25,15 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.PointerIcon;
 import android.view.View;
 import android.view.View.OnFocusChangeListener;
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityEvent;
 
+import com.android.internal.R;
+
 /**
  *
  * Displays a list of tab labels representing each page in the parent's tab
diff --git a/core/java/android/widget/TableLayout.java b/core/java/android/widget/TableLayout.java
index eed3c2d..8bb4d16 100644
--- a/core/java/android/widget/TableLayout.java
+++ b/core/java/android/widget/TableLayout.java
@@ -16,14 +16,15 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
 import android.util.SparseBooleanArray;
 import android.view.View;
 import android.view.ViewGroup;
+
+import com.android.internal.R;
+
 import java.util.regex.Pattern;
 
 /**
diff --git a/core/java/android/widget/TextClock.java b/core/java/android/widget/TextClock.java
index 5003c61..a6a9db4 100644
--- a/core/java/android/widget/TextClock.java
+++ b/core/java/android/widget/TextClock.java
@@ -16,6 +16,9 @@
 
 package android.widget;
 
+import static android.view.ViewDebug.ExportedProperty;
+import static android.widget.RemoteViews.RemoteView;
+
 import android.annotation.NonNull;
 import android.app.ActivityManager;
 import android.content.BroadcastReceiver;
@@ -37,13 +40,10 @@
 
 import com.android.internal.R;
 
-import java.util.Calendar;
-import java.util.TimeZone;
-
 import libcore.icu.LocaleData;
 
-import static android.view.ViewDebug.ExportedProperty;
-import static android.widget.RemoteViews.*;
+import java.util.Calendar;
+import java.util.TimeZone;
 
 /**
  * <p><code>TextClock</code> can display the current date and/or time as
diff --git a/core/java/android/widget/TimePicker.java b/core/java/android/widget/TimePicker.java
index 6a76c5b..e6cd798 100644
--- a/core/java/android/widget/TimePicker.java
+++ b/core/java/android/widget/TimePicker.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
@@ -32,12 +30,14 @@
 import android.view.View;
 import android.view.accessibility.AccessibilityEvent;
 
+import com.android.internal.R;
+
+import libcore.icu.LocaleData;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Locale;
 
-import libcore.icu.LocaleData;
-
 /**
  * A widget for selecting the time of day, in either 24-hour or AM/PM mode.
  * <p>
diff --git a/core/java/android/widget/TimePickerSpinnerDelegate.java b/core/java/android/widget/TimePickerSpinnerDelegate.java
index 26e1564..6a68f60 100644
--- a/core/java/android/widget/TimePickerSpinnerDelegate.java
+++ b/core/java/android/widget/TimePickerSpinnerDelegate.java
@@ -16,6 +16,9 @@
 
 package android.widget;
 
+import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
+import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_YES;
+
 import android.annotation.TestApi;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -29,14 +32,12 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
-import com.android.internal.R;
 
-import java.util.Calendar;
+import com.android.internal.R;
 
 import libcore.icu.LocaleData;
 
-import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
-import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_YES;
+import java.util.Calendar;
 
 /**
  * A delegate implementing the basic spinner-based TimePicker.
diff --git a/core/java/android/widget/TwoLineListItem.java b/core/java/android/widget/TwoLineListItem.java
index 69ff488..0445ebd 100644
--- a/core/java/android/widget/TwoLineListItem.java
+++ b/core/java/android/widget/TwoLineListItem.java
@@ -20,22 +20,21 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
-import android.widget.RelativeLayout;
 
 /**
- * <p>A view group with two children, intended for use in ListViews. This item has two 
- * {@link android.widget.TextView TextViews} elements (or subclasses) with the ID values 
+ * <p>A view group with two children, intended for use in ListViews. This item has two
+ * {@link android.widget.TextView TextViews} elements (or subclasses) with the ID values
  * {@link android.R.id#text1 text1}
- * and {@link android.R.id#text2 text2}. There is an optional third View element with the 
- * ID {@link android.R.id#selectedIcon selectedIcon}, which can be any View subclass 
+ * and {@link android.R.id#text2 text2}. There is an optional third View element with the
+ * ID {@link android.R.id#selectedIcon selectedIcon}, which can be any View subclass
  * (though it is typically a graphic View, such as {@link android.widget.ImageView ImageView})
- * that can be displayed when a TwoLineListItem has focus. Android supplies a 
- * {@link android.R.layout#two_line_list_item standard layout resource for TwoLineListView} 
+ * that can be displayed when a TwoLineListItem has focus. Android supplies a
+ * {@link android.R.layout#two_line_list_item standard layout resource for TwoLineListView}
  * (which does not include a selected item icon), but you can design your own custom XML
  * layout for this object.
- * 
+ *
  * @attr ref android.R.styleable#TwoLineListItem_mode
- * 
+ *
  * @deprecated This class can be implemented easily by apps using a {@link RelativeLayout}
  * or a {@link LinearLayout}.
  */
@@ -51,7 +50,7 @@
     }
 
     public TwoLineListItem(Context context, AttributeSet attrs) {
-        this(context, attrs, 0); 
+        this(context, attrs, 0);
     }
 
     public TwoLineListItem(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -70,11 +69,11 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        
+
         mText1 = (TextView) findViewById(com.android.internal.R.id.text1);
         mText2 = (TextView) findViewById(com.android.internal.R.id.text2);
     }
-    
+
     /**
      * Returns a handle to the item with ID text1.
      * @return A handle to the item with ID text1.
@@ -82,7 +81,7 @@
     public TextView getText1() {
         return mText1;
     }
-    
+
     /**
      * Returns a handle to the item with ID text2.
      * @return A handle to the item with ID text2.
diff --git a/core/java/android/widget/ViewFlipper.java b/core/java/android/widget/ViewFlipper.java
index 65af7aa..e769d71 100644
--- a/core/java/android/widget/ViewFlipper.java
+++ b/core/java/android/widget/ViewFlipper.java
@@ -21,7 +21,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.res.TypedArray;
-import android.os.*;
+import android.os.Message;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.widget.RemoteViews.RemoteView;
diff --git a/core/java/android/widget/YearPickerView.java b/core/java/android/widget/YearPickerView.java
index a3f5a67..824fec8 100644
--- a/core/java/android/widget/YearPickerView.java
+++ b/core/java/android/widget/YearPickerView.java
@@ -16,8 +16,6 @@
 
 package android.widget;
 
-import com.android.internal.R;
-
 import android.content.Context;
 import android.content.res.Resources;
 import android.icu.util.Calendar;
@@ -27,6 +25,8 @@
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityEvent;
 
+import com.android.internal.R;
+
 /**
  * Displays a selectable list of years.
  */
diff --git a/core/java/android/widget/ZoomButtonsController.java b/core/java/android/widget/ZoomButtonsController.java
index fb912a4..69b79971 100644
--- a/core/java/android/widget/ZoomButtonsController.java
+++ b/core/java/android/widget/ZoomButtonsController.java
@@ -30,11 +30,11 @@
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.ViewRootImpl;
 import android.view.WindowManager;
-import android.view.View.OnClickListener;
 import android.view.WindowManager.LayoutParams;
 
 /*
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 4c6350b..65142ab 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -19,6 +19,14 @@
     LOCAL_CFLAGS += -DENABLE_CPUSETS
 endif
 
+# TODO: Linear blending should be enabled by default, but we are
+# TODO: making it an opt-in while it's a work in progress
+# TODO: The final test should be:
+# TODO: ifneq ($(TARGET_ENABLE_LINEAR_BLENDING),false)
+ifeq ($(TARGET_ENABLE_LINEAR_BLENDING),true)
+    LOCAL_CFLAGS += -DANDROID_ENABLE_LINEAR_BLENDING
+endif
+
 LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
 
 LOCAL_CFLAGS += -DU_USING_ICU_NAMESPACE=0
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index e797321..9ed1588 100755
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -16,8 +16,8 @@
 #include "android_util_Binder.h"
 #include "android_nio_utils.h"
 #include "CreateJavaOutputStreamAdaptor.h"
-#include <Caches.h>
 #include <hwui/Paint.h>
+#include <hwui/PixelRef.h>
 #include <renderthread/RenderProxy.h>
 
 #include "core_jni_helpers.h"
@@ -25,8 +25,6 @@
 #include <jni.h>
 #include <memory>
 #include <string>
-#include <sys/mman.h>
-#include <cutils/ashmem.h>
 
 #define DEBUG_PARCEL 0
 #define ASHMEM_BITMAP_MIN_SIZE (128 * (1 << 10))
@@ -124,152 +122,6 @@
     uint32_t mGenerationId;
 };
 
-void PixelRef::reconfigure(const SkImageInfo& newInfo, size_t rowBytes, SkColorTable* ctable) {
-    if (kIndex_8_SkColorType != newInfo.colorType()) {
-        ctable = nullptr;
-    }
-    mRowBytes = rowBytes;
-    if (mColorTable.get() != ctable) {
-        mColorTable.reset(ctable);
-    }
-
-    // Need to validate the alpha type to filter against the color type
-    // to prevent things like a non-opaque RGB565 bitmap
-    SkAlphaType alphaType;
-    LOG_ALWAYS_FATAL_IF(!SkColorTypeValidateAlphaType(
-            newInfo.colorType(), newInfo.alphaType(), &alphaType),
-            "Failed to validate alpha type!");
-
-    // Dirty hack is dirty
-    // TODO: Figure something out here, Skia's current design makes this
-    // really hard to work with. Skia really, really wants immutable objects,
-    // but with the nested-ref-count hackery going on that's just not
-    // feasible without going insane trying to figure it out
-    SkImageInfo* myInfo = const_cast<SkImageInfo*>(&this->info());
-    *myInfo = newInfo;
-    changeAlphaType(alphaType);
-
-    // Docs say to only call this in the ctor, but we're going to call
-    // it anyway even if this isn't always the ctor.
-    // TODO: Fix this too as part of the above TODO
-    setPreLocked(getStorage(), mRowBytes, mColorTable.get());
-}
-
-PixelRef::PixelRef(void* address, size_t size, const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
-            : SkPixelRef(info)
-            , mPixelStorageType(PixelStorageType::Heap) {
-    mPixelStorage.heap.address = address;
-    mPixelStorage.heap.size = size;
-    reconfigure(info, rowBytes, ctable);
-}
-
-PixelRef::PixelRef(void* address, void* context, FreeFunc freeFunc,
-                const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
-            : SkPixelRef(info)
-            , mPixelStorageType(PixelStorageType::External) {
-    mPixelStorage.external.address = address;
-    mPixelStorage.external.context = context;
-    mPixelStorage.external.freeFunc = freeFunc;
-    reconfigure(info, rowBytes, ctable);
-}
-
-PixelRef::PixelRef(void* address, int fd, size_t mappedSize,
-                const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
-            : SkPixelRef(info)
-            , mPixelStorageType(PixelStorageType::Ashmem) {
-    mPixelStorage.ashmem.address = address;
-    mPixelStorage.ashmem.fd = fd;
-    mPixelStorage.ashmem.size = mappedSize;
-    reconfigure(info, rowBytes, ctable);
-}
-
-PixelRef::~PixelRef() {
-    switch (mPixelStorageType) {
-    case PixelStorageType::External:
-        mPixelStorage.external.freeFunc(mPixelStorage.external.address,
-                mPixelStorage.external.context);
-        break;
-    case PixelStorageType::Ashmem:
-        munmap(mPixelStorage.ashmem.address, mPixelStorage.ashmem.size);
-        close(mPixelStorage.ashmem.fd);
-        break;
-    case PixelStorageType::Heap:
-        free(mPixelStorage.heap.address);
-        break;
-    }
-
-    if (android::uirenderer::Caches::hasInstance()) {
-        android::uirenderer::Caches::getInstance().textureCache.releaseTexture(getStableID());
-    }
-}
-
-bool PixelRef::hasHardwareMipMap() const {
-    return mHasHardwareMipMap;
-}
-
-void PixelRef::setHasHardwareMipMap(bool hasMipMap) {
-    mHasHardwareMipMap = hasMipMap;
-}
-
-void* PixelRef::getStorage() const {
-    switch (mPixelStorageType) {
-    case PixelStorageType::External:
-        return mPixelStorage.external.address;
-    case PixelStorageType::Ashmem:
-        return mPixelStorage.ashmem.address;
-    case PixelStorageType::Heap:
-        return mPixelStorage.heap.address;
-    }
-}
-
-bool PixelRef::onNewLockPixels(LockRec* rec) {
-    rec->fPixels = getStorage();
-    rec->fRowBytes = mRowBytes;
-    rec->fColorTable = mColorTable.get();
-    return true;
-}
-
-size_t PixelRef::getAllocatedSizeInBytes() const {
-    return info().getSafeSize(mRowBytes);
-}
-
-int PixelRef::getAshmemFd() const {
-    switch (mPixelStorageType) {
-    case PixelStorageType::Ashmem:
-        return mPixelStorage.ashmem.fd;
-    default:
-        return -1;
-    }
-}
-
-size_t PixelRef::getAllocationByteCount() const {
-    switch (mPixelStorageType) {
-    case PixelStorageType::Heap:
-        return mPixelStorage.heap.size;
-    default:
-        return rowBytes() * height();
-    }
-}
-
-void PixelRef::reconfigure(const SkImageInfo& info) {
-    reconfigure(info, info.minRowBytes(), nullptr);
-}
-
-void PixelRef::setAlphaType(SkAlphaType alphaType) {
-    if (!SkColorTypeValidateAlphaType(info().colorType(), alphaType, &alphaType)) {
-        return;
-    }
-
-    changeAlphaType(alphaType);
-}
-
-void PixelRef::getSkBitmap(SkBitmap* outBitmap) {
-    outBitmap->setInfo(info(), rowBytes());
-    outBitmap->setPixelRef(this);
-    outBitmap->setHasHardwareMipMap(mHasHardwareMipMap);
-}
-
-
 // Convenience class that does not take a global ref on the pixels, relying
 // on the caller already having a local JNI ref
 class LocalScopedBitmap {
@@ -693,7 +545,8 @@
     }
 
     SkBitmap bitmap;
-    bitmap.setInfo(SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType));
+    bitmap.setInfo(SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType,
+            GraphicsJNI::defaultColorSpace()));
 
     PixelRef* nativeBitmap = GraphicsJNI::allocateHeapPixelRef(&bitmap, NULL);
     if (!nativeBitmap) {
@@ -794,7 +647,8 @@
         // Otherwise respect the premultiplied request.
         alphaType = requestPremul ? kPremul_SkAlphaType : kUnpremul_SkAlphaType;
     }
-    bitmap->pixelRef()->reconfigure(SkImageInfo::Make(width, height, colorType, alphaType));
+    bitmap->pixelRef()->reconfigure(SkImageInfo::Make(width, height, colorType, alphaType,
+            sk_sp<SkColorSpace>(bitmap->info().colorSpace())));
 }
 
 // These must match the int values in Bitmap.java
@@ -927,6 +781,7 @@
     const bool        isMutable = p->readInt32() != 0;
     const SkColorType colorType = (SkColorType)p->readInt32();
     const SkAlphaType alphaType = (SkAlphaType)p->readInt32();
+    const bool        isSRGB = p->readInt32() != 0;
     const int         width = p->readInt32();
     const int         height = p->readInt32();
     const int         rowBytes = p->readInt32();
@@ -943,7 +798,8 @@
 
     std::unique_ptr<SkBitmap> bitmap(new SkBitmap);
 
-    if (!bitmap->setInfo(SkImageInfo::Make(width, height, colorType, alphaType), rowBytes)) {
+    if (!bitmap->setInfo(SkImageInfo::Make(width, height, colorType, alphaType,
+            isSRGB ? SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named) : nullptr), rowBytes)) {
         return NULL;
     }
 
@@ -1058,9 +914,13 @@
     auto androidBitmap = reinterpret_cast<Bitmap*>(bitmapHandle);
     androidBitmap->getSkBitmap(&bitmap);
 
+    sk_sp<SkColorSpace> sRGB = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
+    bool isSRGB = bitmap.colorSpace() == sRGB.get();
+
     p->writeInt32(isMutable);
     p->writeInt32(bitmap.colorType());
     p->writeInt32(bitmap.alphaType());
+    p->writeInt32(isSRGB); // TODO: We should write the color space (b/32072280)
     p->writeInt32(bitmap.width());
     p->writeInt32(bitmap.height());
     p->writeInt32(bitmap.rowBytes());
@@ -1273,7 +1133,9 @@
     reinterpret_cast<Bitmap*>(bm1Handle)->getSkBitmap(&bm1);
     if (bm0.width() != bm1.width() ||
         bm0.height() != bm1.height() ||
-        bm0.colorType() != bm1.colorType()) {
+        bm0.colorType() != bm1.colorType() ||
+        bm0.alphaType() != bm1.alphaType() ||
+        bm0.colorSpace() != bm1.colorSpace()) {
         return JNI_FALSE;
     }
 
diff --git a/core/jni/android/graphics/Bitmap.h b/core/jni/android/graphics/Bitmap.h
index 8e631ee..588a99c 100644
--- a/core/jni/android/graphics/Bitmap.h
+++ b/core/jni/android/graphics/Bitmap.h
@@ -24,14 +24,6 @@
 
 namespace android {
 
-enum class PixelStorageType {
-    External,
-    Heap,
-    Ashmem,
-};
-
-typedef void (*FreeFunc)(void* addr, void* context);
-
 class PixelRef;
 
 namespace bitmap {
@@ -61,69 +53,6 @@
 
 } // namespace bitmap
 
-class PixelRef : public SkPixelRef {
-public:
-    PixelRef(void* address, size_t allocSize, const SkImageInfo& info, size_t rowBytes,
-            SkColorTable* ctable);
-    PixelRef(void* address, void* context, FreeFunc freeFunc,
-            const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable);
-    PixelRef(void* address, int fd, size_t mappedSize, const SkImageInfo& info,
-            size_t rowBytes, SkColorTable* ctable);
-
-    int width() const { return info().width(); }
-    int height() const { return info().height(); }
-
-    // Can't mark as override since SkPixelRef::rowBytes isn't virtual
-    // but that's OK since we just want Bitmap to be able to rely
-    // on calling rowBytes() on an unlocked pixelref, which it will be
-    // doing on a PixelRef type, not a SkPixelRef, so static
-    // dispatching will do what we want.
-    size_t rowBytes() const { return mRowBytes; }
-    void reconfigure(const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable);
-    void reconfigure(const SkImageInfo& info);
-    void setAlphaType(SkAlphaType alphaType);
-
-    void getSkBitmap(SkBitmap* outBitmap);
-
-    int getAshmemFd() const;
-    size_t getAllocationByteCount() const;
-
-protected:
-    virtual bool onNewLockPixels(LockRec* rec) override;
-    virtual void onUnlockPixels() override { };
-    virtual size_t getAllocatedSizeInBytes() const override;
-private:
-    friend class Bitmap;
-    virtual ~PixelRef();
-    void doFreePixels();
-    void* getStorage() const;
-    void setHasHardwareMipMap(bool hasMipMap);
-    bool hasHardwareMipMap() const;
-
-    PixelStorageType mPixelStorageType;
-
-    size_t mRowBytes = 0;
-    sk_sp<SkColorTable> mColorTable;
-    bool mHasHardwareMipMap = false;
-
-    union {
-        struct {
-            void* address;
-            void* context;
-            FreeFunc freeFunc;
-        } external;
-        struct {
-            void* address;
-            int fd;
-            size_t size;
-        } ashmem;
-        struct {
-            void* address;
-            size_t size;
-        } heap;
-    } mPixelStorage;
-};
-
 } // namespace android
 
 #endif /* BITMAP_H_ */
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index 5bb0274..5c24585 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -385,11 +385,8 @@
     // Set the alpha type for the decode.
     SkAlphaType alphaType = codec->computeOutputAlphaType(requireUnpremultiplied);
 
-    // Enable legacy behavior to avoid any gamma correction.  Android's assets are
-    // adjusted to expect a non-gamma correct premultiply.
-    sk_sp<SkColorSpace> colorSpace = nullptr;
-    const SkImageInfo decodeInfo = SkImageInfo::Make(size.width(), size.height(), decodeColorType,
-                                                     alphaType, colorSpace);
+    const SkImageInfo decodeInfo = SkImageInfo::Make(size.width(), size.height(),
+            decodeColorType, alphaType, GraphicsJNI::defaultColorSpace());
 
     SkImageInfo bitmapInfo = decodeInfo;
     if (decodeColorType == kGray_8_SkColorType) {
@@ -413,7 +410,7 @@
 
     // Use SkAndroidCodec to perform the decode.
     SkAndroidCodec::AndroidOptions codecOptions;
-    codecOptions.fZeroInitialized =  decodeAllocator == &defaultAllocator ?
+    codecOptions.fZeroInitialized = decodeAllocator == &defaultAllocator ?
             SkCodec::kYes_ZeroInitialized : SkCodec::kNo_ZeroInitialized;
     codecOptions.fColorPtr = colorPtr;
     codecOptions.fColorCount = colorCount;
@@ -452,8 +449,10 @@
     jobject ninePatchInsets = NULL;
     if (peeker.mHasInsets) {
         ninePatchInsets = env->NewObject(gInsetStruct_class, gInsetStruct_constructorMethodID,
-                peeker.mOpticalInsets[0], peeker.mOpticalInsets[1], peeker.mOpticalInsets[2], peeker.mOpticalInsets[3],
-                peeker.mOutlineInsets[0], peeker.mOutlineInsets[1], peeker.mOutlineInsets[2], peeker.mOutlineInsets[3],
+                peeker.mOpticalInsets[0], peeker.mOpticalInsets[1],
+                peeker.mOpticalInsets[2], peeker.mOpticalInsets[3],
+                peeker.mOutlineInsets[0], peeker.mOutlineInsets[1],
+                peeker.mOutlineInsets[2], peeker.mOutlineInsets[3],
                 peeker.mOutlineRadius, peeker.mOutlineAlpha, scale);
         if (ninePatchInsets == NULL) {
             return nullObjectReturn("nine patch insets == null");
@@ -495,11 +494,11 @@
         }
 
         SkPaint paint;
-        // kSrc_Mode instructs us to overwrite the unininitialized pixels in
+        // kSrc_Mode instructs us to overwrite the uninitialized pixels in
         // outputBitmap.  Otherwise we would blend by default, which is not
         // what we want.
         paint.setXfermodeMode(SkXfermode::kSrc_Mode);
-        paint.setFilterQuality(kLow_SkFilterQuality);
+        paint.setFilterQuality(kLow_SkFilterQuality); // bilinear filtering
 
         SkCanvas canvas(outputBitmap);
         canvas.scale(sx, sy);
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp
index 8a55052..82b70fc 100644
--- a/core/jni/android/graphics/Graphics.cpp
+++ b/core/jni/android/graphics/Graphics.cpp
@@ -587,6 +587,14 @@
     return wrapper;
 }
 
+sk_sp<SkColorSpace> GraphicsJNI::defaultColorSpace() {
+#ifdef ANDROID_ENABLE_LINEAR_BLENDING
+    return SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
+#else
+    return nullptr;
+#endif
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 bool HeapAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) {
     mStorage.reset(GraphicsJNI::allocateHeapPixelRef(bitmap, ctable));
diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h
index ceda3cd..e5af525 100644
--- a/core/jni/android/graphics/GraphicsJNI.h
+++ b/core/jni/android/graphics/GraphicsJNI.h
@@ -10,8 +10,10 @@
 #include "SkMallocPixelRef.h"
 #include "SkPoint.h"
 #include "SkRect.h"
+#include "SkColorSpace.h"
 #include <jni.h>
 #include <hwui/Canvas.h>
+#include <hwui/PixelRef.h>
 
 class SkBitmapRegionDecoder;
 class SkCanvas;
@@ -93,6 +95,8 @@
     static bool SetPixels(JNIEnv* env, jintArray colors, int srcOffset,
             int srcStride, int x, int y, int width, int height,
             const SkBitmap& dstBitmap);
+
+    static sk_sp<SkColorSpace> defaultColorSpace();
 };
 
 class HeapAllocator : public SkBRDAllocator {
diff --git a/core/jni/android_graphics_Canvas.cpp b/core/jni/android_graphics_Canvas.cpp
index 87f754d..43f7ca5 100644
--- a/core/jni/android_graphics_Canvas.cpp
+++ b/core/jni/android_graphics_Canvas.cpp
@@ -442,9 +442,8 @@
                             jboolean hasAlpha, jlong paintHandle) {
     // Note: If hasAlpha is false, kRGB_565_SkColorType will be used, which will
     // correct the alphaType to kOpaque_SkAlphaType.
-    SkImageInfo info = SkImageInfo::Make(width, height,
-                           hasAlpha ? kN32_SkColorType : kRGB_565_SkColorType,
-                           kPremul_SkAlphaType);
+    SkImageInfo info = SkImageInfo::MakeN32(width, height, kPremul_SkAlphaType,
+            GraphicsJNI::defaultColorSpace());
     SkBitmap bitmap;
     bitmap.setInfo(info);
     if (!GraphicsJNI::allocatePixels(env, &bitmap, NULL)) {
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index ba9facf..2b1353c 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -116,8 +116,6 @@
 jfieldID otherStats_field;
 jfieldID hasSwappedOutPss_field;
 
-static bool memtrackLoaded;
-
 struct stats_t {
     int pss;
     int swappablePss;
@@ -199,10 +197,6 @@
  */
 static int read_memtrack_memory(int pid, struct graphics_memory_pss* graphics_mem)
 {
-    if (!memtrackLoaded) {
-        return -1;
-    }
-
     struct memtrack_proc* p = memtrack_proc_new();
     if (p == NULL) {
         ALOGW("failed to create memtrack_proc");
@@ -1095,14 +1089,6 @@
 
 int register_android_os_Debug(JNIEnv *env)
 {
-    int err = memtrack_init();
-    if (err != 0) {
-        memtrackLoaded = false;
-        ALOGE("failed to load memtrack module: %d", err);
-    } else {
-        memtrackLoaded = true;
-    }
-
     jclass clazz = env->FindClass("android/os/Debug$MemoryInfo");
 
     // Sanity check the number of other statistics expected in Java matches here.
diff --git a/core/jni/android_view_GraphicBuffer.cpp b/core/jni/android_view_GraphicBuffer.cpp
index 59c337b..1743731 100644
--- a/core/jni/android_view_GraphicBuffer.cpp
+++ b/core/jni/android_view_GraphicBuffer.cpp
@@ -182,7 +182,8 @@
     SkBitmap bitmap;
     bitmap.setInfo(SkImageInfo::Make(buffer->getWidth(), buffer->getHeight(),
                                      convertPixelFormat(buffer->getPixelFormat()),
-                                     kPremul_SkAlphaType),
+                                     kPremul_SkAlphaType,
+                                     GraphicsJNI::defaultColorSpace()),
                    bytesCount);
 
     if (buffer->getWidth() > 0 && buffer->getHeight() > 0) {
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 3f2b924..b6c81cf8 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -318,11 +318,11 @@
         return 0;
     }
 
-
     SkImageInfo info = SkImageInfo::Make(outBuffer.width, outBuffer.height,
                                          convertPixelFormat(outBuffer.format),
-                                         outBuffer.format == PIXEL_FORMAT_RGBX_8888 ?
-                                         kOpaque_SkAlphaType : kPremul_SkAlphaType);
+                                         outBuffer.format == PIXEL_FORMAT_RGBX_8888
+                                                 ? kOpaque_SkAlphaType : kPremul_SkAlphaType,
+                                         GraphicsJNI::defaultColorSpace());
 
     SkBitmap bitmap;
     ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 5d53b3f..65f12ac 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -175,7 +175,9 @@
     }
     SkImageInfo screenshotInfo = SkImageInfo::Make(screenshot->getWidth(),
                                                    screenshot->getHeight(),
-                                                   colorType, alphaType);
+                                                   colorType,
+                                                   alphaType,
+                                                   GraphicsJNI::defaultColorSpace());
 
     const size_t rowBytes =
             screenshot->getStride() * android::bytesPerPixel(screenshot->getFormat());
diff --git a/core/jni/android_view_TextureView.cpp b/core/jni/android_view_TextureView.cpp
index e185281..268aec5 100644
--- a/core/jni/android_view_TextureView.cpp
+++ b/core/jni/android_view_TextureView.cpp
@@ -90,7 +90,8 @@
         default:
             break;
     }
-    return SkImageInfo::Make(buffer.width, buffer.height, colorType, alphaType);
+    return SkImageInfo::Make(buffer.width, buffer.height, colorType, alphaType,
+            GraphicsJNI::defaultColorSpace());
 }
 
 /**
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 309bb2f..14dcb3f 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -613,21 +613,6 @@
     return atoi(prop) > 0 ? JNI_TRUE : JNI_FALSE;
 }
 
-static void android_view_ThreadedRenderer_setAtlas(JNIEnv* env, jobject clazz,
-        jlong proxyPtr, jobject graphicBuffer, jlongArray atlasMapArray) {
-    sp<GraphicBuffer> buffer = graphicBufferForJavaObject(env, graphicBuffer);
-    jsize len = env->GetArrayLength(atlasMapArray);
-    if (len <= 0) {
-        ALOGW("Failed to initialize atlas, invalid map length: %d", len);
-        return;
-    }
-    int64_t* map = new int64_t[len];
-    env->GetLongArrayRegion(atlasMapArray, 0, len, map);
-
-    RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
-    proxy->setTextureAtlas(buffer, map, len);
-}
-
 static void android_view_ThreadedRenderer_setProcessStatsBuffer(JNIEnv* env, jobject clazz,
         jlong proxyPtr, jint fd) {
     RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
@@ -955,7 +940,6 @@
 
 static const JNINativeMethod gMethods[] = {
     { "nSupportsOpenGL", "()Z", (void*) android_view_ThreadedRenderer_supportsOpenGL },
-    { "nSetAtlas", "(JLandroid/view/GraphicBuffer;[J)V",   (void*) android_view_ThreadedRenderer_setAtlas },
     { "nSetProcessStatsBuffer", "(JI)V", (void*) android_view_ThreadedRenderer_setProcessStatsBuffer },
     { "nGetRenderThreadTid", "(J)I", (void*) android_view_ThreadedRenderer_getRenderThreadTid },
     { "nCreateRootRenderNode", "()J", (void*) android_view_ThreadedRenderer_createRootRenderNode },
diff --git a/core/res/res/layout-round-watch/alert_dialog_title_material.xml b/core/res/res/layout-round-watch/alert_dialog_title_material.xml
index 0279911..7e71e41 100644
--- a/core/res/res/layout-round-watch/alert_dialog_title_material.xml
+++ b/core/res/res/layout-round-watch/alert_dialog_title_material.xml
@@ -24,6 +24,7 @@
             android:maxHeight="24dp"
             android:maxWidth="24dp"
             android:layout_marginTop="12dp"
+            android:layout_gravity="center_horizontal"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:src="@null" />
diff --git a/core/res/res/values-mcc311-mnc480/config.xml b/core/res/res/values-mcc311-mnc480/config.xml
index 714b312..439f1d6 100755
--- a/core/res/res/values-mcc311-mnc480/config.xml
+++ b/core/res/res/values-mcc311-mnc480/config.xml
@@ -48,9 +48,6 @@
          provisioning, availability etc -->
     <bool name="config_carrier_vt_available">true</bool>
 
-    <!-- Flag specifying whether VoLTE availability is based on provisioning -->
-    <bool name="config_carrier_volte_provisioned">true</bool>
-
     <bool name="config_auto_attach_data_on_creation">false</bool>
 
     <!-- Flag indicating whether strict threshold is used, or lenient threshold is used,
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index f0a25aa..c3967e4 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3965,6 +3965,7 @@
     </declare-styleable>
 
     <declare-styleable name="ProgressBar">
+        <attr name="min" format="integer" />
         <!-- Defines the maximum value the progress can take. -->
         <attr name="max" format="integer" />
         <!-- Defines the default progress value, between 0 and max. -->
@@ -7941,6 +7942,14 @@
 
     <declare-styleable name="SeekBarPreference">
         <attr name="layout" />
+        <!-- Attribute indicating whether the slider within this preference can be adjusted, that is
+        pressing left/right keys when this preference is focused will move the slider accordingly (e.g.
+        inline adjustable preferences). False, if the slider within the preference is read-only and
+        cannot be adjusted. By default, the seekbar is adjustable. -->
+        <attr name="adjustable" format="boolean" />
+        <!-- Flag indicating whether the TextView next to the seekbar that shows the current seekbar value will be
+        displayed. If true, the view is VISIBLE; if false, the view will be GONE. By default, this view is VISIBLE. -->
+        <attr name="showSeekBarValue" format="boolean" />
     </declare-styleable>
 
     <!-- Base attributes available to PreferenceFragment. -->
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 3d1acdf..e8ae3dd 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2212,9 +2212,6 @@
          provisioning, availability etc -->
     <bool name="config_carrier_volte_available">false</bool>
 
-    <!-- Flag specifying whether VoLTE availability is based on provisioning -->
-    <bool name="config_carrier_volte_provisioned">false</bool>
-
     <!-- Flag specifying whether VoLTE TTY is supported -->
     <bool name="config_carrier_volte_tty_supported">true</bool>
 
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 7bce379..7999e7e 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2764,4 +2764,5 @@
     <public-group type="id" first-id="0x01020041">
     </public-group>
 
+    <public type="attr" name="min" />
 </resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 019a5e8..91f76f2 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2219,7 +2219,6 @@
   <java-symbol type="bool" name="imsServiceAllowTurnOff" />
   <java-symbol type="bool" name="config_device_volte_available" />
   <java-symbol type="bool" name="config_carrier_volte_available" />
-  <java-symbol type="bool" name="config_carrier_volte_provisioned" />
   <java-symbol type="bool" name="config_carrier_volte_tty_supported" />
   <java-symbol type="bool" name="config_device_vt_available" />
   <java-symbol type="bool" name="config_device_respects_hold_carrier_config" />
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 7200d47..6185dab 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -289,6 +289,8 @@
   to: /design/patterns/app-structure.html
 - from: /guide/practices/ui_guidelines/menu_design.html
   to: /design/patterns/actionbar.html
+- from: /design/patterns/accessibility.html
+  to: https://material.google.com/usability/accessibility.html
 - from: /design/get-started/ui-overview.html
   to: /design/handhelds/index.html
 - from: /design/building-blocks/buttons.html
diff --git a/docs/html/design/_book.yaml b/docs/html/design/_book.yaml
index 18b4719..8ffa9a4 100644
--- a/docs/html/design/_book.yaml
+++ b/docs/html/design/_book.yaml
@@ -117,8 +117,6 @@
     path: /design/patterns/pure-android.html
   - title: Compatibility
     path: /design/patterns/compatibility.html
-  - title: Accessibility
-    path: /design/patterns/accessibility.html
   - title: Help
     path: /design/patterns/help.html
 
diff --git a/docs/html/design/patterns/accessibility.jd b/docs/html/design/patterns/accessibility.jd
deleted file mode 100644
index b910294..0000000
--- a/docs/html/design/patterns/accessibility.jd
+++ /dev/null
@@ -1,98 +0,0 @@
-page.title=Accessibility
-page.tags="accessibility","navigation","input"
-page.metaDescription=Design an app that's universally accessible to people with visual impairment, color deficiency, hearing loss, and limited dexterity.
-@jd:body
-
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/usability/accessibility.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Accessibility<p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}training/accessibility/index.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Implementing Accessibility</p>
-  </div>
-</a>
-
-<p>One of Android's missions is to organize the world's information and make it universally accessible and useful. Accessibility is the measure of how successfully a product can be used by people with varying abilities. Our mission applies to all users-including people with disabilities such as visual impairment, color deficiency, hearing loss, and limited dexterity.</p>
-<p><a href="https://www.google.com/#hl=en&q=universal+design&fp=1">Universal design</a> is the practice of making products that are inherently accessible to all users, regardless of ability. The Android design patterns were created in accordance with universal design principles, and following them will help your app meet basic usability standards. Adhering to universal design and enabling Android's accessibility tools will make your app as accessible as possible.</p>
-<p>Robust support for accessibility will increase your app's user base. It may also be required for adoption by some organizations.</p>
-<p><a href="http://www.google.com/accessibility/">Learn more about Google and accessibility.</a></p>
-
-<h2 id="tools">Android's Accessibility Tools</h2>
-<p>Android includes several features that support access for users with visual impairments; they don't require drastic visual changes to your app.</p>
-
-<ul>
-  <li><strong><a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">TalkBack</a></strong> is a pre-installed screen reader service provided by Google. It uses spoken feedback to describe the results of actions such as launching an app, and events such as notifications.</li>
-  <li><strong>Explore by Touch</strong> is a system feature that works with TalkBack, allowing you to touch your device's screen and hear what's under your finger via spoken feedback. This feature is helpful to users with low vision.</li>
-  <li><strong>Accessibility settings</strong> let you modify your device's display and sound options, such as increasing the text size, changing the speed at which text is spoken, and more.</li>
-</ul>
-
-<p>Some users use hardware or software directional controllers (such as a D-pad, trackball, keyboard) to jump from selection to selection on a screen. They interact with the structure of your app in a linear fashion, similar to 4-way remote control navigation on a television.</p>
-
-<h2 id="tools">Guidelines</h2>
-<p>The Android design principle "I should always know where I am" is key for accessibility concerns. As a user navigates through an application, they need feedback and a mental model of where they are. All users benefit from a strong sense of information hierarchy and an architecture that makes sense. Most users benefit from visual and haptic feedback during their navigation (such as labels, colors, icons, touch feedback) Low vision users benefit from explicit verbal descriptions and large visuals with high contrast.</p>
-<p>As you design your app, think about the labels and notations needed to navigate your app by sound. When using Explore by Touch, the user enables an invisible but audible layer of structure in your application. Like any other aspect of app design, this structure can be simple, elegant, and robust. The following are Android's recommended guidelines to enable effective navigation for all users.</p>
-
-<h4>Make navigation intuitive</h4>
-<p>Design well-defined, clear task flows with minimal navigation steps, especially for major user tasks. Make sure those tasks are navigable via focus controls. </p>
-
-<h4>Use recommended touch target sizes</h4>
-<p>48 dp is the recommended touch target size for on screen elements. Read about <a href="{@docRoot}design/style/metrics-grids.html">Android Metrics and Grids</a> to learn about implementation strategies to help most of your users. For certain users, it may be appropriate to use larger touch targets. An example of this is educational apps, where buttons larger than the minimum recommendations are appropriate for children with developing motor skills and people with manual dexterity challenges.</p>
-
-
-<h4>Label visual UI elements meaningfully</h4>
-<p>In your wireframes, <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#label-ui">label functional UI components</a> that have no visible text. Those components might be buttons, icons, tabs with icons, and icons with state (like stars). Developers can use the <code><a href="{@docRoot}guide/topics/ui/accessibility/apps.html#label-ui">contentDescription</a></code> attribute to set the label.</p>
-
-<div class ="cols">
-    <div class="col-8">
-      <img src="{@docRoot}design/media/accessibility_contentdesc.png">
-    </div>
-    <div class="col-5 with-callouts">
-      <ol>
-        <li class="value-1">group</li>
-        <li class="value-2">all contacts</li>
-        <li class="value-3">favorites</li>
-        <li class="value-4">search</li>
-        <li class="value-5">action overflow button</li>
-        <li class="value-6">
-          <em>when starred:</em> remove from favorites </br>
-          <em>when not starred:</em> add to favorties</li>
-        <li class="value-7">action overflow button</li>
-        <li class="value-8">text message</li>
-      </ol>
-  </div>
-</div>
-
-<h4>Provide alternatives to affordances that time out</h4>
-<p>Your app may have icons or controls that disappear after a certain amount of time. For example, five seconds after starting a video, playback controls may fade from the screen.</p>
-
-<p>Due to the way that TalkBack works, those controls are not read out loud unless they are focused on. If they fade out from the screen quickly, your user may not even be aware that they are available. Therefore, make sure that you are not relying on timed out controls for high priority task flows. (This is a good universal design guideline too.) If the controls enable an important function, make sure that the user can turn on the controls again and/or their function is duplicated elsewhere. You can also change the behavior of your app when accessibility services are turned on. Your developer may be able to make sure that timed-out controls won't disappear.</p>
-
-<h4>Use standard framework controls or enable TalkBack for custom controls</h4>
-<p>Standard Android framework controls work automatically with accessibility services and have ContentDescriptions built in by default.</p>
-
-<p>An oft-overlooked system control is font size. Users can turn on a system-wide large font size in Settings; using the default system font size in your application will enable the user's preferences in your app as well. To enable system font size in your app, mark text and their associated containers to be measured in <a href="{@docRoot}guide/practices/screens_support.html#screen-independence">scale pixels</a>.</p>
-
-<p>Also, keep in mind that when users have large fonts enabled or speak a different language than you, their type might be larger than the space you've allotted for it. Read <a href="{@docRoot}design/style/devices-displays.html">Devices and Displays</a> and <a href="http://developer.android.com/guide/practices/screens_support.html">Supporting Multiple Screens</a> for design strategies.</p>
-
-<p>If you use custom controls, Android has the developer tools in place to allow adherence to the above guidelines and provide meaningful descriptions about the UI. Provide adequate notation on your wireframes and direct your developer to the <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#custom-views">Custom Views</a> documentation.</p>
-
-<h4>Try it out yourself</h4>
-<p>Turn on the TalkBack service in <strong>Settings > Accessibility</strong> and navigate your application using directional controls or eyes-free navigation.</p>
-
-
-
-<h2>Checklist</h2>
-<ul>
-  <li>Make navigation intuitive</li>
-  <li>Use recommended touch target sizes</li>
-  <li>Label visual UI elements meaningfully</li>
-  <li>Provide alternatives to affordances that time out</li>
-  <li>Use standard framework controls or enable TalkBack for custom controls</li>
-  <li>Try it out yourself</li>
-</ul>
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_additions.html
index 9786c92..fcff8ea 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_additions.html
@@ -332,7 +332,7 @@
 <!-- Method zBy -->
 <nobr><A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html#android.support.v4.view.ViewPropertyAnimatorCompat.zBy_added(float)" class="hiddenlink" target="rightframe"><b>zBy</b>
 (<code>float</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_all.html
index 7055d15..4e923e6 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_all.html
@@ -425,7 +425,7 @@
 <!-- Method zBy -->
 <nobr><A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html#android.support.v4.view.ViewPropertyAnimatorCompat.zBy_added(float)" class="hiddenlink" target="rightframe"><b>zBy</b>
 (<code>float</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_changes.html
index c40c9f5..4002f63 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_changes.html
@@ -114,7 +114,7 @@
 <A HREF="android.support.v4.view.ViewParentCompat.html" class="hiddenlink" target="rightframe">ViewParentCompat</A><br>
 <!-- Class ViewPropertyAnimatorCompat -->
 <A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html" class="hiddenlink" target="rightframe">ViewPropertyAnimatorCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_removals.html
index 68d2c20..c6ec566 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/alldiffs_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.Builder.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.Builder.html
index ae6415e..42084ee 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.Builder.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.Builder.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.CustomAction.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.CustomAction.html
index 4e476b3..deab0af 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.CustomAction.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.CustomAction.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html
index bd3e5dd..16b5462 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html
@@ -144,7 +144,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewCompat.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewCompat.html
index 1574050..d48ce71 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewCompat.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewCompat.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPager.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPager.html
index f03c403..bed9612 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPager.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPager.html
@@ -140,7 +140,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewParentCompat.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewParentCompat.html
index 6cdd299..08d2ab2 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewParentCompat.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewParentCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
index 5706997..1bfa2b3 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
index e746f08..09b19c2 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
@@ -151,7 +151,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatActivity.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatActivity.html
index ccce9c5..7b2f8bb 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatActivity.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatActivity.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatCallback.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatCallback.html
index f53a519..fd75b74 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatCallback.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatCallback.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDelegate.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDelegate.html
index 88490d4..5df87b9 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDelegate.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDelegate.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDialog.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDialog.html
index 42d29a8..6d992ad 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDialog.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.app.AppCompatDialog.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.util.SortedList.html b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.util.SortedList.html
index 0364519..edfb8bd 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.util.SortedList.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/android.support.v7.util.SortedList.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/changes-summary.html b/docs/html/sdk/support_api_diff/22.2.0/changes/changes-summary.html
index c6736cd..72ddc5a 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/changes-summary.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/changes-summary.html
@@ -233,7 +233,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_additions.html
index ccd5b66..4537739 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_additions.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_all.html b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_all.html
index 728e37d..50a77aa 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_all.html
@@ -88,7 +88,7 @@
 <A HREF="android.support.v4.view.ViewPager.html" class="hiddenlink" target="rightframe">ViewPager</A><br>
 <A HREF="android.support.v4.view.ViewParentCompat.html" class="hiddenlink" target="rightframe">ViewParentCompat</A><br>
 <A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html" class="hiddenlink" target="rightframe">ViewPropertyAnimatorCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_changes.html b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_changes.html
index 64e7f44..04fc9bc 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_changes.html
@@ -88,7 +88,7 @@
 <A HREF="android.support.v4.view.ViewPager.html" class="hiddenlink" target="rightframe">ViewPager</A><br>
 <A HREF="android.support.v4.view.ViewParentCompat.html" class="hiddenlink" target="rightframe">ViewParentCompat</A><br>
 <A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html" class="hiddenlink" target="rightframe">ViewPropertyAnimatorCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_removals.html b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_removals.html
index 792fc4e..8881d7d 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/classes_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_additions.html b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_additions.html
index 3237ba3..603d376 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_additions.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_all.html b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_all.html
index 637582e..a29ef64 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_all.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_changes.html b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_changes.html
index 728fa2d..182ad3c 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_removals.html b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_removals.html
index 1b95544..9f9bb43 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/constructors_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_additions.html b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_additions.html
index 48de992..6b0d997 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_additions.html
@@ -69,7 +69,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v4.media.session.PlaybackStateCompat.html#android.support.v4.media.session.PlaybackStateCompat.STATE_SKIPPING_TO_QUEUE_ITEM" class="hiddenlink" target="rightframe">STATE_SKIPPING_TO_QUEUE_ITEM</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_all.html b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_all.html
index 02f6dc0..726deb6 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_all.html
@@ -69,7 +69,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v4.media.session.PlaybackStateCompat.html#android.support.v4.media.session.PlaybackStateCompat.STATE_SKIPPING_TO_QUEUE_ITEM" class="hiddenlink" target="rightframe">STATE_SKIPPING_TO_QUEUE_ITEM</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_changes.html b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_changes.html
index 4ebfa31..e4376a5 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_removals.html b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_removals.html
index 09b0726..db6d007 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/fields_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_help.html b/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_help.html
index 8bfbd1d..e978be0 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_help.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_help.html
@@ -120,7 +120,7 @@
 There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. 
 In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. 
 </BLOCKQUOTE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_statistics.html b/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_statistics.html
index 229819b..6a96e39 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_statistics.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_statistics.html
@@ -265,7 +265,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_topleftframe.html b/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_topleftframe.html
index 36f9836..6a2e76e 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/jdiff_topleftframe.html
@@ -49,7 +49,7 @@
   <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="fields_index_all.html" TARGET="bottomleftframe">By Field</A></FONT><br></TD>
 </TR>
 </TABLE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_additions.html b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_additions.html
index f7c8488..b7b94ac 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_additions.html
@@ -264,7 +264,7 @@
 (<code>float</code>)</A></nobr><br>
 <nobr><A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html#android.support.v4.view.ViewPropertyAnimatorCompat.zBy_added(float)" class="hiddenlink" target="rightframe"><b>zBy</b>
 (<code>float</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_all.html b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_all.html
index 63a2848..04d38841 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_all.html
@@ -266,7 +266,7 @@
 (<code>float</code>)</A></nobr><br>
 <nobr><A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html#android.support.v4.view.ViewPropertyAnimatorCompat.zBy_added(float)" class="hiddenlink" target="rightframe"><b>zBy</b>
 (<code>float</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_changes.html b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_changes.html
index 3e43f87..3bfd471 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_changes.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.view.ViewPager.html#android.support.v4.view.ViewPager.setOnPageChangeListener_changed(android.support.v4.view.ViewPager.OnPageChangeListener)" class="hiddenlink" target="rightframe">setOnPageChangeListener
 (<code>OnPageChangeListener</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_removals.html b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_removals.html
index b5aea4f..e85e6fc 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/methods_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_additions.html b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_additions.html
index 7d92a82..183d500 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_additions.html
@@ -61,7 +61,7 @@
 <A HREF="changes-summary.html#android.support.v7.appcompat" class="hiddenlink" target="rightframe"><b>android.support.v7.appcompat</b></A><br>
 <A HREF="changes-summary.html#android.support.v7.recyclerview" class="hiddenlink" target="rightframe"><b>android.support.v7.recyclerview</b></A><br>
 <A HREF="changes-summary.html#android.support.v7.widget.helper" class="hiddenlink" target="rightframe"><b>android.support.v7.widget.helper</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_all.html b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_all.html
index 2735fe9..0fb83cf 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_all.html
@@ -66,7 +66,7 @@
 <A HREF="changes-summary.html#android.support.v7.recyclerview" class="hiddenlink" target="rightframe"><b>android.support.v7.recyclerview</b></A><br>
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
 <A HREF="changes-summary.html#android.support.v7.widget.helper" class="hiddenlink" target="rightframe"><b>android.support.v7.widget.helper</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_changes.html b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_changes.html
index 3e40878..917e060 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_changes.html
@@ -55,7 +55,7 @@
 <A HREF="pkg_android.support.v4.view.accessibility.html" class="hiddenlink" target="rightframe">android.support.v4.view.accessibility</A><br>
 <A HREF="pkg_android.support.v7.app.html" class="hiddenlink" target="rightframe">android.support.v7.app</A><br>
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_removals.html b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_removals.html
index d0ffabc..d5a825d 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/packages_index_removals.html
@@ -49,7 +49,7 @@
 </div>
 <br>
 <div id="indexTableEntries">
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.media.session.html b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.media.session.html
index 4dfd7de..992f05d 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.media.session.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.media.session.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.accessibility.html b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.accessibility.html
index f52efcb..86dc841 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.accessibility.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.accessibility.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.html b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.html
index f05d812..ad51e62 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v4.view.html
@@ -126,7 +126,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.app.html b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.app.html
index 44bf61d..508323f 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.app.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.app.html
@@ -126,7 +126,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.util.html b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.util.html
index d08d9af..8f74fb7 100644
--- a/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.util.html
+++ b/docs/html/sdk/support_api_diff/22.2.0/changes/pkg_android.support.v7.util.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_additions.html
index 3374ffd..a1055f1 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_additions.html
@@ -660,7 +660,7 @@
 <!-- Method useStaticShadow -->
 <nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.useStaticShadow_added()" class="hiddenlink" target="rightframe"><b>useStaticShadow</b>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_all.html
index bb24c29..48f43d2 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_all.html
@@ -913,7 +913,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_changes.html
index 8340749..d5b60c9 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_changes.html
@@ -389,7 +389,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_removals.html
index 0d670c0..f2a8797 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/alldiffs_index_removals.html
@@ -83,7 +83,7 @@
 <!-- Field Platform_V12_AppCompat_Light -->
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Platform_V12_AppCompat_Light" class="hiddenlink" target="rightframe"><strike>Platform_V12_AppCompat_Light</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.CoordinatorLayout.Behavior.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
index 78392f4..c45efa2 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.Behavior.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.Behavior.html
index 6d68976..a23105a 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.Behavior.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.Behavior.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.html
index 21b55c0..91a6d77 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.FloatingActionButton.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.Snackbar.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.Snackbar.html
index 028df73..24fdf70 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.Snackbar.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.Snackbar.html
@@ -130,7 +130,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.Tab.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.Tab.html
index 2acf995..74a296d 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.Tab.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.Tab.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.html
index 22a5ff5..3a8d151 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.design.widget.TabLayout.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsFragment.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsFragment.html
index 16e5798..7ae6ce1 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsFragment.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsFragment.html
@@ -136,7 +136,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsSupportFragment.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
index 7825292..d1733ac 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
@@ -136,7 +136,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.DetailsOverviewRowPresenter.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.DetailsOverviewRowPresenter.html
index ba8e6af..799db3d 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.DetailsOverviewRowPresenter.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.DetailsOverviewRowPresenter.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder.html
index 25f1b48..f8c0cbf 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.ViewHolder.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.html
index a88f694..b98c33e 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ItemBridgeAdapter.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ListRowPresenter.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ListRowPresenter.html
index 5d71011..f9ad877 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ListRowPresenter.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ListRowPresenter.html
@@ -111,7 +111,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.OnChildSelectedListener.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.OnChildSelectedListener.html
index eb8a563..f13b147 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.OnChildSelectedListener.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.OnChildSelectedListener.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.ViewHolder.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.ViewHolder.html
index a94d9f5..55f3575 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.ViewHolder.html
@@ -116,7 +116,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.html
index fde5e4b..417bf86 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.Presenter.html
@@ -116,7 +116,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.PresenterSelector.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.PresenterSelector.html
index 06a0a79..827b2cf 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.PresenterSelector.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.PresenterSelector.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.RowPresenter.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.RowPresenter.html
index 6da5f9b..24b7683 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.RowPresenter.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.RowPresenter.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
index ac3ac3a..9814065 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
@@ -172,7 +172,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
index ab9ce07..c18075e 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
@@ -111,7 +111,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompat.Action.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompat.Action.html
index 8519610..d96b874 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompat.Action.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompat.Action.html
@@ -131,7 +131,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.Action.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.Action.html
index 498374e..09ae7fc 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.Action.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.Action.html
@@ -151,7 +151,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.html
index 309d7b6..9824574 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v4.app.NotificationCompatBase.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.attr.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.attr.html
index 229289c..541f134 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.attr.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.attr.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.dimen.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.dimen.html
index a253e59..584073e 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.dimen.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.dimen.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.drawable.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.drawable.html
index 4f87127..45a1dc7 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.drawable.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.drawable.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.id.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.id.html
index e856c8b..cecd912 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.id.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.id.html
@@ -192,7 +192,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.integer.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.integer.html
index 70585a7..4b90739 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.integer.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.integer.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.layout.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.layout.html
index 8130707..c0a1304 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.layout.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.layout.html
@@ -157,7 +157,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.string.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.string.html
index 6a01b20..39be2b2 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.string.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.string.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.style.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.style.html
index 886f2ce..ffc3690 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.style.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.style.html
@@ -186,7 +186,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.styleable.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.styleable.html
index cd9cd60..713526b 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.styleable.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.appcompat.R.styleable.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.util.SortedList.html b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.util.SortedList.html
index b38c632..181a0fc 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.util.SortedList.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/android.support.v7.util.SortedList.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/changes-summary.html b/docs/html/sdk/support_api_diff/22.2.1/changes/changes-summary.html
index e05b67d..b500246 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/changes-summary.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/changes-summary.html
@@ -177,7 +177,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_additions.html
index 52b4ab7..f2fe6ec 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_additions.html
@@ -103,7 +103,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.support.v17.leanback.widget.html#OnChildViewHolderSelectedListener" class="hiddenlink" target="rightframe"><b>OnChildViewHolderSelectedListener</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_all.html b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_all.html
index 1edab7a..16ebdfa 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_all.html
@@ -339,7 +339,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_changes.html b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_changes.html
index f46bc67..8072f0f 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_changes.html
@@ -259,7 +259,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_removals.html b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_removals.html
index 09c0d19..757f5bb 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/classes_index_removals.html
@@ -63,7 +63,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.support.v17.leanback.widget.html#GridLayoutManager" class="hiddenlink" target="rightframe"><strike>GridLayoutManager</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_additions.html b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_additions.html
index e694216..3bced29 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_additions.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.app.NotificationCompatBase.html#android.support.v4.app.NotificationCompatBase.ctor_added()" class="hiddenlink" target="rightframe"><b>NotificationCompatBase</b>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_all.html b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_all.html
index 27d7557..7769d75 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_all.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.app.NotificationCompatBase.html#android.support.v4.app.NotificationCompatBase.ctor_added()" class="hiddenlink" target="rightframe"><b>NotificationCompatBase</b>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_changes.html b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_changes.html
index a5ca2ef..122cdce 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_removals.html b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_removals.html
index 74a09ba..dadd1cd 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/constructors_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_additions.html b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_additions.html
index 2ae5237..5d6411a 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_additions.html
@@ -263,7 +263,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.time" class="hiddenlink" target="rightframe">time</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_all.html b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_all.html
index 4a9194d..85420c3 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_all.html
@@ -291,7 +291,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.time" class="hiddenlink" target="rightframe">time</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_changes.html b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_changes.html
index 0e2ccff..301881a 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_removals.html b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_removals.html
index 6245b05..b1bf691 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/fields_index_removals.html
@@ -55,7 +55,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Platform_V12_AppCompat_Light" class="hiddenlink" target="rightframe"><strike>Platform_V12_AppCompat_Light</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_help.html b/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_help.html
index 25acfbe..f9c1f08 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_help.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_help.html
@@ -120,7 +120,7 @@
 There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. 
 In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. 
 </BLOCKQUOTE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_statistics.html b/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_statistics.html
index 0f4805f..322ad44 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_statistics.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_statistics.html
@@ -368,7 +368,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_topleftframe.html b/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_topleftframe.html
index 36f9836..6a2e76e 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/jdiff_topleftframe.html
@@ -49,7 +49,7 @@
   <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="fields_index_all.html" TARGET="bottomleftframe">By Field</A></FONT><br></TD>
 </TR>
 </TABLE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_additions.html b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_additions.html
index 33a155f..5a237de 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_additions.html
@@ -224,7 +224,7 @@
 </A></nobr><br>
 <nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.useStaticShadow_added()" class="hiddenlink" target="rightframe"><b>useStaticShadow</b>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_all.html b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_all.html
index b9cf858..014ef9a 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_all.html
@@ -256,7 +256,7 @@
 </A></nobr><br>
 <nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.useStaticShadow_added()" class="hiddenlink" target="rightframe"><b>useStaticShadow</b>
 ()</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_changes.html b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_changes.html
index 4e2d329..6b02e2a 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_changes.html
@@ -89,7 +89,7 @@
 &nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.isUsingZOrder_changed(android.content.Context)" class="hiddenlink" target="rightframe">type&nbsp;
 (<code>Context</code>)&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
 </A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_removals.html b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_removals.html
index b5aea4f..e85e6fc 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/methods_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_additions.html b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_additions.html
index 6311752..d08c85c 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_additions.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_additions.html
@@ -51,7 +51,7 @@
 <div id="indexTableEntries">
 <A NAME="A"></A>
 <A HREF="changes-summary.html#android.support.v17.leanback.system" class="hiddenlink" target="rightframe"><b>android.support.v17.leanback.system</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_all.html b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_all.html
index 3f5ee13..712eac9 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_all.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_all.html
@@ -58,7 +58,7 @@
 <A HREF="pkg_android.support.v7.app.html" class="hiddenlink" target="rightframe">android.support.v7.app</A><br>
 <A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_changes.html b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_changes.html
index a4637a7..e53ee87 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_changes.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_changes.html
@@ -57,7 +57,7 @@
 <A HREF="pkg_android.support.v7.app.html" class="hiddenlink" target="rightframe">android.support.v7.app</A><br>
 <A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_removals.html b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_removals.html
index d0ffabc..d5a825d 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_removals.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/packages_index_removals.html
@@ -49,7 +49,7 @@
 </div>
 <br>
 <div id="indexTableEntries">
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.design.widget.html b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.design.widget.html
index 345f33b..25070ce 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.design.widget.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.design.widget.html
@@ -140,7 +140,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.app.html b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.app.html
index 873bc6b..48f868b 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.app.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.app.html
@@ -112,7 +112,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.widget.html b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.widget.html
index 7197d3a..ac3d8435 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.widget.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v17.leanback.widget.html
@@ -324,7 +324,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v4.app.html b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v4.app.html
index 1d15399..3122461 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v4.app.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v4.app.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.app.html b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.app.html
index 47c0894..5f69310 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.app.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.app.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.appcompat.html b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.appcompat.html
index 4c562ae..00bcf19 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.appcompat.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.appcompat.html
@@ -161,7 +161,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.util.html b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.util.html
index bac0313..e0f4bcd 100644
--- a/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.util.html
+++ b/docs/html/sdk/support_api_diff/22.2.1/changes/pkg_android.support.v7.util.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_additions.html
index 5495f89..1717f7d 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_additions.html
@@ -1104,7 +1104,7 @@
 <!-- Field Widget_AppCompat_SeekBar -->
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_all.html
index 575ee95..d4c30e3 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_all.html
@@ -1511,7 +1511,7 @@
 <!-- Field Widget_AppCompat_SeekBar -->
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_changes.html
index d7ebd36..6562fa8 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_changes.html
@@ -548,7 +548,7 @@
 <A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html" class="hiddenlink" target="rightframe">VerticalGridSupportFragment</A><br>
 <!-- Class ViewCompat -->
 <A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_removals.html
index 0d7da0f..9b21b1d 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_removals.html
@@ -270,7 +270,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setEntryTransitionEnabled_removed(boolean)" class="hiddenlink" target="rightframe"><strike>setEntryTransitionEnabled</strike>
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsCallback.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsCallback.html
index 0466d5d..6ba5f831 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsCallback.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsCallback.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
index e3aefb5..c53722b 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.html
index 9312755..db59258 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsService.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsService.html
index 2a0fd18..fd5a12b 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsService.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsService.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSession.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSession.html
index 6b70224..6910bab 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSession.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSession.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSessionToken.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSessionToken.html
index 2bdb42e..0282d49 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSessionToken.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSessionToken.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.SavedState.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.SavedState.html
index bb89bbd..cea16c0 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.SavedState.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.SavedState.html
@@ -123,7 +123,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.html
index b538999a..672951d 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.html
@@ -131,7 +131,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.LayoutParams.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.LayoutParams.html
index 6d19d36..0218c30 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.LayoutParams.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.LayoutParams.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
index c089db3..424a618 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
@@ -124,7 +124,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CollapsingToolbarLayout.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
index 49d92737..8e708c0 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
@@ -143,7 +143,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CoordinatorLayout.SavedState.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CoordinatorLayout.SavedState.html
index f92babd..496a460 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CoordinatorLayout.SavedState.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CoordinatorLayout.SavedState.html
@@ -123,7 +123,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
index 07fdda1..eba4247 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.html
index 90553fa..520fdcf 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.html
@@ -116,7 +116,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.NavigationView.SavedState.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.NavigationView.SavedState.html
index 8a9ae80..61428ca 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.NavigationView.SavedState.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.NavigationView.SavedState.html
@@ -123,7 +123,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.Snackbar.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.Snackbar.html
index d741863..f33e47a 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.Snackbar.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.Snackbar.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.TextInputLayout.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.TextInputLayout.html
index 30d0dd6..609e864 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.TextInputLayout.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.TextInputLayout.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
index b6f2e48..967542f 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v14.preference.EditTextPreferenceDialogFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v14.preference.EditTextPreferenceDialogFragment.html
index 30f22a8..6b6151b 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v14.preference.EditTextPreferenceDialogFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v14.preference.EditTextPreferenceDialogFragment.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseFragment.html
index f4d77bf..14f6fdfa 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseFragment.html
@@ -150,7 +150,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
index a48ea3b..7adcbe8 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
@@ -150,7 +150,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsFragment.html
index d38127c..2240f4e 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsFragment.html
@@ -143,7 +143,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
index a02b8f3..23ca151 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
@@ -143,7 +143,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
index 725281a..4c78b30 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
@@ -215,7 +215,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlayFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlayFragment.html
index 71e230b..ecb35bef 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlayFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlayFragment.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html
index a794f14..1809374 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchFragment.html
index 827f46b..2c444ae 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchFragment.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchSupportFragment.html
index f1e2826..7ff0204 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchSupportFragment.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridFragment.html
index 01bb4de..5516bda 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridFragment.html
@@ -137,7 +137,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridSupportFragment.html
index a818a79..0f09ec0 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridSupportFragment.html
@@ -154,7 +154,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.FragmentAnimationProvider.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.FragmentAnimationProvider.html
index 1cf004d..e457402 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.FragmentAnimationProvider.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.FragmentAnimationProvider.html
@@ -165,7 +165,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
index e0b94bc..9794929 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
@@ -165,7 +165,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
index 96d30a4..3408bd9 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.html
index 84b93bf..857b7d8 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.html
@@ -143,7 +143,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
index 38e83b4..497e985 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
index 104f325..cd45d6d 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
@@ -165,7 +165,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ImageCardView.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ImageCardView.html
index 1535ca0..a5aa07e 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ImageCardView.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ImageCardView.html
@@ -151,7 +151,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ListRowPresenter.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ListRowPresenter.html
index f536d92..11b95c40 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ListRowPresenter.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ListRowPresenter.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.RowPresenter.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.RowPresenter.html
index 3f10b29..0f254d7 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.RowPresenter.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.RowPresenter.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.SearchBar.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.SearchBar.html
index 2965c15..6e4b41c 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.SearchBar.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.SearchBar.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
index 761fd92..553bbb1 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
@@ -127,7 +127,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
index e999838..f1d6fb6 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.app.FragmentActivity.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.app.FragmentActivity.html
index c68356c..dd88aca 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.app.FragmentActivity.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.app.FragmentActivity.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.content.res.ResourcesCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.content.res.ResourcesCompat.html
index 9bdd4f7..bb339da 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.content.res.ResourcesCompat.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.content.res.ResourcesCompat.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.media.session.MediaSessionCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.media.session.MediaSessionCompat.html
index 5b5f1e3..278f42d 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.media.session.MediaSessionCompat.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.media.session.MediaSessionCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.view.ViewCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.view.ViewCompat.html
index 2e39745..03dda58 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.view.ViewCompat.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.view.ViewCompat.html
@@ -179,7 +179,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.NestedScrollView.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.NestedScrollView.html
index 8d4cbaa..cdb3d13 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.NestedScrollView.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.NestedScrollView.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.ScrollerCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.ScrollerCompat.html
index 7f47eae..9ef847e 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.ScrollerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.ScrollerCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.TextViewCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.TextViewCompat.html
index 3641625..87b1da2 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.TextViewCompat.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.TextViewCompat.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.attr.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.attr.html
index dc6fce2..ef31519 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.attr.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.attr.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.bool.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.bool.html
index 973cf83..c26367a 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.bool.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.bool.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.dimen.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.dimen.html
index ca5fec2..bd324cb 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.dimen.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.dimen.html
@@ -186,7 +186,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.drawable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.drawable.html
index 3cfba65..c9264d6 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.drawable.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.drawable.html
@@ -157,7 +157,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.id.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.id.html
index a25139d..e7f9f95 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.id.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.id.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.layout.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.layout.html
index 0b485ea..c04d4f7 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.layout.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.layout.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.string.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.string.html
index b5b32c7..9dc84ab 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.string.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.string.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.style.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.style.html
index a7b4e2d..58f9025 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.style.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.style.html
@@ -158,7 +158,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.styleable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.styleable.html
index 3f6d157..49adae8 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.styleable.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.styleable.html
@@ -150,7 +150,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.Palette.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.Palette.Builder.html
index 03171fb..22ee483 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.Palette.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.Palette.Builder.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.drawable.DrawerArrowDrawable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.drawable.DrawerArrowDrawable.html
index ec3cb15..77232ba 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.drawable.DrawerArrowDrawable.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.drawable.DrawerArrowDrawable.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
index aec06c0..5cac372 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
@@ -154,7 +154,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.html
index 381eb20..437c56d 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.html
@@ -147,7 +147,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouter.RouteInfo.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouter.RouteInfo.html
index 239341d..51afa4f 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouter.RouteInfo.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouter.RouteInfo.html
@@ -166,7 +166,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html
index 05b65ff..ac63d53 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/changes-summary.html b/docs/html/sdk/support_api_diff/23.1.0/changes/changes-summary.html
index 728ade1..d9658ba 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/changes-summary.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/changes-summary.html
@@ -232,7 +232,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_additions.html
index c0022c9..1a97c98 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_additions.html
@@ -197,7 +197,7 @@
 <A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper</b></A><br>
 <A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Builder" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Builder</b></A><br>
 <A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Options" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Options</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_all.html
index 05f83b8..c8f86f4 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_all.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_all.html
@@ -471,7 +471,7 @@
 <A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
 <A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html" class="hiddenlink" target="rightframe">VerticalGridSupportFragment</A><br>
 <A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_changes.html
index b1ee972..f280906 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_changes.html
@@ -415,7 +415,7 @@
 <A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
 <A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html" class="hiddenlink" target="rightframe">VerticalGridSupportFragment</A><br>
 <A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_removals.html
index e6da73f..c466298 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_additions.html
index 3bf8178..45f72f1 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_additions.html
@@ -97,7 +97,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>NavigationView.SavedState</b>
 (<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_all.html
index 546eae8..8dda68f 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_all.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_all.html
@@ -106,7 +106,7 @@
 (<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
 &nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>NavigationView.SavedState</b>
 (<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_changes.html
index 52c8b49..d6584d1 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_removals.html
index 337274d..49ee23c 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_removals.html
@@ -71,7 +71,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>NavigationView.SavedState</strike>
 (<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_additions.html
index d1ef3ac..0c43320 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_additions.html
@@ -329,7 +329,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_all.html
index 697f16a..71d9b71 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_all.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_all.html
@@ -339,7 +339,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_changes.html
index 0e2ccff..301881a 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_removals.html
index 93bcdc3..f520de6 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_removals.html
@@ -67,7 +67,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlOverlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe"><strike>RtlOverlay_Widget_AppCompat_ActionButton_Overflow</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_help.html b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_help.html
index b03b763..0ba76e7 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_help.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_help.html
@@ -120,7 +120,7 @@
 There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. 
 In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. 
 </BLOCKQUOTE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_statistics.html b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_statistics.html
index bdda25f..ac4d43e 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_statistics.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_statistics.html
@@ -568,7 +568,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_topleftframe.html b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_topleftframe.html
index 36f9836..6a2e76e 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_topleftframe.html
@@ -49,7 +49,7 @@
   <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="fields_index_all.html" TARGET="bottomleftframe">By Field</A></FONT><br></TD>
 </TR>
 </TABLE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_additions.html
index 9b4eab3..fee36df 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_additions.html
@@ -516,7 +516,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.customtabs.CustomTabsService.html#android.support.customtabs.CustomTabsService.updateVisuals_added(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>updateVisuals</b>
 (<code>CustomTabsSessionToken, Bundle</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_all.html
index d63656c..7a2fe5c 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_all.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_all.html
@@ -616,7 +616,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.customtabs.CustomTabsService.html#android.support.customtabs.CustomTabsService.updateVisuals_added(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>updateVisuals</b>
 (<code>CustomTabsSessionToken, Bundle</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_changes.html
index 8271b35..254a721 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_changes.html
@@ -77,7 +77,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnecting_changed(boolean)" class="hiddenlink" target="rightframe">setConnecting
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_removals.html
index 7250505..0b6f2b4 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_removals.html
@@ -158,7 +158,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setEntryTransitionEnabled_removed(boolean)" class="hiddenlink" target="rightframe"><strike>setEntryTransitionEnabled</strike>
 (<code>boolean</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_additions.html
index 1776064..e7ed63e 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_additions.html
@@ -49,7 +49,7 @@
 </div>
 <br>
 <div id="indexTableEntries">
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_all.html
index 2bf0974..4236847 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_all.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_all.html
@@ -67,7 +67,7 @@
 <A HREF="pkg_android.support.v7.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v7.graphics.drawable</A><br>
 <A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
 <A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_changes.html
index 519e9aa..8d51ea2 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_changes.html
@@ -67,7 +67,7 @@
 <A HREF="pkg_android.support.v7.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v7.graphics.drawable</A><br>
 <A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
 <A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_removals.html
index 9fd0f7e..ae935f4 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_removals.html
@@ -49,7 +49,7 @@
 </div>
 <br>
 <div id="indexTableEntries">
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.customtabs.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.customtabs.html
index d85f3f8..ea62004 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.customtabs.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.customtabs.html
@@ -140,7 +140,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.design.widget.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.design.widget.html
index 449afa6..45625b9 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.design.widget.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.design.widget.html
@@ -211,7 +211,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.percent.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.percent.html
index 53b92a9..13b9732 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.percent.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.percent.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v14.preference.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v14.preference.html
index 3ef0a0f..7364b7c 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v14.preference.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v14.preference.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.app.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.app.html
index 49ee52f..21763fb 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.app.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.app.html
@@ -211,7 +211,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.widget.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.widget.html
index 73d5050..ff00794 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.widget.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.widget.html
@@ -239,7 +239,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.app.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.app.html
index b1645a6..ccdb5fe 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.app.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.app.html
@@ -120,7 +120,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.html
index efc62c9..b1b6ffc 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.res.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.res.html
index fd9c9f8..f6a1367 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.res.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.res.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.media.session.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.media.session.html
index afd23b1..1182648 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.media.session.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.media.session.html
@@ -120,7 +120,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.view.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.view.html
index 7d74c82..b4fe9b2 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.view.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.view.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.widget.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.widget.html
index 4ca7874..e32ebc8 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.widget.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.widget.html
@@ -134,7 +134,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.appcompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.appcompat.html
index 553bdf2..b516a35 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.appcompat.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.appcompat.html
@@ -161,7 +161,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.drawable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.drawable.html
index e9d5cd9..69c91d5 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.drawable.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.drawable.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.html
index ba9a092..13d6ef9 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.media.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.media.html
index 7892bf9..4c2094c 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.media.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.media.html
@@ -134,7 +134,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.preference.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.preference.html
index ced3a90..ed590bb 100644
--- a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.preference.html
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.preference.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_additions.html
index 09ec1eb..3b43f27 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_additions.html
@@ -1955,7 +1955,7 @@
 <!-- Method XYZToLAB -->
 <nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.XYZToLAB_added(double, double, double, double[])" class="hiddenlink" target="rightframe"><b>XYZToLAB</b>
 (<code>double, double, double, double[]</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_all.html
index 770d615..6264757 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_all.html
@@ -2914,7 +2914,7 @@
 <!-- Method XYZToLAB -->
 <nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.XYZToLAB_added(double, double, double, double[])" class="hiddenlink" target="rightframe"><b>XYZToLAB</b>
 (<code>double, double, double, double[]</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_changes.html
index 134580d..6113a9e 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_changes.html
@@ -939,7 +939,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v4.view.WindowCompat.html" class="hiddenlink" target="rightframe">WindowCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_removals.html
index a60b244..2df39dc 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_removals.html
@@ -956,7 +956,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.view.WindowCompat.html#android.support.v4.view.WindowCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>WindowCompat</strike>
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
index 46a0548..3e97afd 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.html
index 7987724..d7745e6 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.html
@@ -151,7 +151,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsSession.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsSession.html
index 1296d4c..9b48018 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsSession.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsSession.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
index d539481..80c8e11 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
@@ -136,7 +136,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
index e47f317..e1ae295 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
@@ -164,7 +164,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
index 04efe89..ee87ca6 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
@@ -121,7 +121,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.FloatingActionButton.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.FloatingActionButton.html
index 985adba..33d67e2 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.FloatingActionButton.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.FloatingActionButton.html
@@ -144,7 +144,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.HeaderScrollingViewBehavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.HeaderScrollingViewBehavior.html
index 7021ba2..0e24356 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.HeaderScrollingViewBehavior.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.HeaderScrollingViewBehavior.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TabLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TabLayout.html
index 9224ddb..3d0eb9f 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TabLayout.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TabLayout.html
@@ -111,7 +111,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TextInputLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TextInputLayout.html
index b0f5d63..d72b373 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TextInputLayout.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TextInputLayout.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.ViewOffsetBehavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.ViewOffsetBehavior.html
index 1b4625f..9faa826 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.ViewOffsetBehavior.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.ViewOffsetBehavior.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
index c13de02..13c0b4e 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
@@ -130,7 +130,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v14.preference.PreferenceFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v14.preference.PreferenceFragment.html
index 3a910d0..7ead465 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v14.preference.PreferenceFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v14.preference.PreferenceFragment.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowFragment.html
index 003f04b..9bd2bd7 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowFragment.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowSupportFragment.html
index 6a30cc3..cf9900c 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowSupportFragment.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseFragment.html
index 74cb151..d7d0e76 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseFragment.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
index a46a8ed..d7bb8c9 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsFragment.html
index 34875c3..852b28a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsFragment.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
index 4cd41ed..444a537 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
index 0962be7..1cfc19e 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
@@ -330,7 +330,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepSupportFragment.html
index b464afa..c5f0d5a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepSupportFragment.html
@@ -330,7 +330,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html
index 0df02c4..800f32b 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html
@@ -112,7 +112,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html
index cc2eeda..70ec556 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html
index 0c59abd..ee37373 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html
@@ -112,7 +112,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html
index ee27726..99e380d 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsFragment.html
index 612c05a..7c78322 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsFragment.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsSupportFragment.html
index 7cbdf0c..a112b19 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsSupportFragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsSupportFragment.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html
index 674231e..ef74a40 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html
index 74e170c..05a2205 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
index 0a20eb4..f67942e 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
index b77684b..4d1d86b 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
@@ -281,7 +281,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.html
index 20165c7..2ce2773 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.html
@@ -307,7 +307,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
index 0849383..b9b78cb 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
@@ -195,7 +195,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
index a8dff6f..fbe6bb4 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
@@ -306,7 +306,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ImageCardView.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ImageCardView.html
index f110a16..dde52dd 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ImageCardView.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ImageCardView.html
@@ -111,7 +111,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html
index 2207a6d..9aadb33 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
index 2479a86..4545dc6 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.AppOpsManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.AppOpsManagerCompat.html
index 15ddb44..8d4b281 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.AppOpsManagerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.AppOpsManagerCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.BundleCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.BundleCompat.html
index 63ecf79..65cb6ce 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.BundleCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.BundleCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.Fragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.Fragment.html
index d6c9e88..adb8e8a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.Fragment.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.Fragment.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentActivity.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentActivity.html
index 72bd4de..843cf68 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentActivity.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentActivity.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentHostCallback.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentHostCallback.html
index fcb311f..ca9cab8 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentHostCallback.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentHostCallback.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NavUtils.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NavUtils.html
index e4fb7fa..7267e50 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NavUtils.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NavUtils.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NotificationManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NotificationManagerCompat.html
index be48aac..06346b2 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NotificationManagerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NotificationManagerCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.RemoteInput.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.RemoteInput.html
index a6a2a2d..006eeee 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.RemoteInput.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.RemoteInput.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ServiceCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ServiceCompat.html
index c038e52..613affe 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ServiceCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ServiceCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ShareCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ShareCompat.html
index 8e9c945..90c0630 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ShareCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ShareCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.TaskStackBuilder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.TaskStackBuilder.html
index 8a8a3c7..12d44de 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.TaskStackBuilder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.TaskStackBuilder.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContentResolverCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContentResolverCompat.html
index 6abd31a..37ab80d 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContentResolverCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContentResolverCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContextCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContextCompat.html
index c0abad2..92f9469 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContextCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContextCompat.html
@@ -111,7 +111,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.IntentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.IntentCompat.html
index 707b2de..37a8b42 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.IntentCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.IntentCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.LocalBroadcastManager.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.LocalBroadcastManager.html
index fb0f8eb..a3d8f89 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.LocalBroadcastManager.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.LocalBroadcastManager.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ParallelExecutorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ParallelExecutorCompat.html
index 135c65a..3dd3598 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ParallelExecutorCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ParallelExecutorCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.EditorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.EditorCompat.html
index 2a46cc87..5159fec 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.EditorCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.EditorCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.html
index 99e7e84..3c4513a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.pm.ActivityInfoCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.pm.ActivityInfoCompat.html
index 201f6e2..1fa3936 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.pm.ActivityInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.pm.ActivityInfoCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.res.ResourcesCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.res.ResourcesCompat.html
index 497d73b..77e6d43 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.res.ResourcesCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.res.ResourcesCompat.html
@@ -137,7 +137,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.database.DatabaseUtilsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.database.DatabaseUtilsCompat.html
index 0feb04b..90a5d72 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.database.DatabaseUtilsCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.database.DatabaseUtilsCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.BitmapCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.BitmapCompat.html
index 3b50f8e..912d5ee 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.BitmapCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.BitmapCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.ColorUtils.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.ColorUtils.html
index 68c2dce..1dfcdc5 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.ColorUtils.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.ColorUtils.html
@@ -186,7 +186,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
index 735909e..041cbfd 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
@@ -152,7 +152,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html
index f0e4cbf..2323bf0 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html
index 3c5e74d..8a49a32 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.ConnectivityManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.ConnectivityManagerCompat.html
index 585fbe1..45e77fa 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.ConnectivityManagerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.ConnectivityManagerCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.TrafficStatsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.TrafficStatsCompat.html
index d8d8d74..89403e7 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.TrafficStatsCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.TrafficStatsCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.AsyncTaskCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.AsyncTaskCompat.html
index 0ea4b47..fcde361 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.AsyncTaskCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.AsyncTaskCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.EnvironmentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.EnvironmentCompat.html
index 4d625b1..914f3f0 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.EnvironmentCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.EnvironmentCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.ParcelableCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.ParcelableCompat.html
index 0192ed6..8933edd 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.ParcelableCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.ParcelableCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.TraceCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.TraceCompat.html
index 3f490ba..8778c2e4 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.TraceCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.TraceCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.ICUCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.ICUCompat.html
index 2b97440..c4ea966 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.ICUCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.ICUCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextDirectionHeuristicsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextDirectionHeuristicsCompat.html
index 45557e1..351a162 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextDirectionHeuristicsCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextDirectionHeuristicsCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextUtilsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextUtilsCompat.html
index 16d0835..d3ab7ce 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextUtilsCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextUtilsCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GestureDetectorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GestureDetectorCompat.html
index 5c0463d..e66c261 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GestureDetectorCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GestureDetectorCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GravityCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GravityCompat.html
index 9ee14c5..95c665e 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GravityCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GravityCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.InputDeviceCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.InputDeviceCompat.html
index 4a7f385..38a1cd8 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.InputDeviceCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.InputDeviceCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.KeyEventCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.KeyEventCompat.html
index 49526ab..58692a9 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.KeyEventCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.KeyEventCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.LayoutInflaterCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.LayoutInflaterCompat.html
index 7329ff7..b62e876 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.LayoutInflaterCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.LayoutInflaterCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MarginLayoutParamsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MarginLayoutParamsCompat.html
index 86a7b57..444980d 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MarginLayoutParamsCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MarginLayoutParamsCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuCompat.html
index 22ead5ec..17b8b7d 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuItemCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuItemCompat.html
index a321ac3..415dae2 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuItemCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuItemCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MotionEventCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MotionEventCompat.html
index cb8895d..c1f81ba 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MotionEventCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MotionEventCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ScaleGestureDetectorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ScaleGestureDetectorCompat.html
index 23f8718..8733e6b 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ScaleGestureDetectorCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ScaleGestureDetectorCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.VelocityTrackerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.VelocityTrackerCompat.html
index 31a2b66..078bb96 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.VelocityTrackerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.VelocityTrackerCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewCompat.html
index bbfebc1..0647acb 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
index 3deb282..0721e0c 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewGroupCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewGroupCompat.html
index 973f25d..7c3f280 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewGroupCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewGroupCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewParentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewParentCompat.html
index 0ff6977..186cdce 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewParentCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewParentCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
index dcb75fc..7611f00 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.WindowCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.WindowCompat.html
index a9711fa..bf16942a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.WindowCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.WindowCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
index e2045d7..b9b15c8 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
index d74f936..5180523 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.animation.PathInterpolatorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.animation.PathInterpolatorCompat.html
index 6701f77..715f73f 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.animation.PathInterpolatorCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.animation.PathInterpolatorCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.DrawerLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.DrawerLayout.html
index c2e7c83..f859501 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.DrawerLayout.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.DrawerLayout.html
@@ -148,7 +148,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.EdgeEffectCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.EdgeEffectCompat.html
index 6993bec..a476dfb 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.EdgeEffectCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.EdgeEffectCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ListPopupWindowCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ListPopupWindowCompat.html
index fc5ed8d..243f6d2 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ListPopupWindowCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ListPopupWindowCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupMenuCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupMenuCompat.html
index 1d55628..c3cca70 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupMenuCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupMenuCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupWindowCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupWindowCompat.html
index 215118c..0523e9f 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupWindowCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupWindowCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ScrollerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ScrollerCompat.html
index ea76c92..f13086d 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ScrollerCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ScrollerCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.SearchViewCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.SearchViewCompat.html
index ce5abd3..e3de11d 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.SearchViewCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.SearchViewCompat.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.TextViewCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.TextViewCompat.html
index e2078f4..e3a0f9a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.TextViewCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.TextViewCompat.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.app.AppCompatDelegate.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.app.AppCompatDelegate.html
index 6fd286c..2dbee43 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.app.AppCompatDelegate.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.app.AppCompatDelegate.html
@@ -172,7 +172,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.attr.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.attr.html
index c399a8a..2a2364a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.attr.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.attr.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html
index ec1ee38..a2e1dc3 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html
@@ -347,7 +347,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.style.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.style.html
index 478d333..32befe4 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.style.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.style.html
@@ -178,7 +178,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.styleable.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.styleable.html
index 498ec51..6433bc2 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.styleable.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.styleable.html
@@ -1705,7 +1705,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.Builder.html
index 83f441b..2758189 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.Builder.html
@@ -140,7 +140,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.html
index be157a7..d7752f5 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
index 7db6666..9181648 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.html
index 315ba3d..0cb71cf 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouter.Callback.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouter.Callback.html
index 66be68d..5d68006 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouter.Callback.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouter.Callback.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceFragmentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceFragmentCompat.html
index 68aa733..980ff0d 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceFragmentCompat.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceFragmentCompat.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceScreen.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceScreen.html
index 12de78c..de14ee0 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceScreen.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceScreen.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceViewHolder.html
index b27e66c..0597c2a 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceViewHolder.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceViewHolder.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.recyclerview.R.dimen.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.recyclerview.R.dimen.html
index b38c6dc..a56e112 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.recyclerview.R.dimen.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.recyclerview.R.dimen.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.OrientationHelper.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.OrientationHelper.html
index 6a2a9b3..9111877 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.OrientationHelper.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.OrientationHelper.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.ItemAnimator.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.ItemAnimator.html
index 95e642e..a641975 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.ItemAnimator.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.ItemAnimator.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.LayoutManager.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.LayoutManager.html
index 30b0a78..173d636 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.LayoutManager.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.LayoutManager.html
@@ -193,7 +193,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.State.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.State.html
index 2b3ac61..86d91dc 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.State.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.State.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.html
index 5cdc7a0..a53430b 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.helper.ItemTouchHelper.Callback.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.helper.ItemTouchHelper.Callback.html
index 1237408..b241e6e 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.helper.ItemTouchHelper.Callback.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.helper.ItemTouchHelper.Callback.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/changes-summary.html b/docs/html/sdk/support_api_diff/23.2.0/changes/changes-summary.html
index d41ec1f..431b2ae 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/changes-summary.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/changes-summary.html
@@ -352,7 +352,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/23.2.0/changes/classes_index_additions.html
index a2e1d44..eb0457c 100644
--- a/docs/html/sdk/support_api_diff/23.2.0/changes/classes_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/classes_index_additions.html
@@ -143,7 +143,7 @@
 <p><div style="line-height:1.5em;color:black">
 <A HREF="pkg_android.support.v17.leanback.widget.html#ViewHolderTask" class="hiddenlink" target="rightframe"><b><i>ViewHolderTask</i></b></A><br>
 <A HREF="pkg_android.support.design.widget.html#VisibilityAwareImageButton" class="hiddenlink" target="rightframe"><b>VisibilityAwareImageButton</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_additions.html
index 78c94e1..c526b45 100644
--- a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_additions.html
@@ -1128,7 +1128,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_Button_Colored" class="hiddenlink" target="rightframe">Widget_AppCompat_Button_Colored</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_all.html
index f39d82e..61459ad 100644
--- a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_all.html
@@ -1457,7 +1457,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_Button_Colored" class="hiddenlink" target="rightframe">Widget_AppCompat_Button_Colored</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_changes.html
index debbb14..0a63a58 100644
--- a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_changes.html
@@ -485,7 +485,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_removals.html
index a6cdb59..9f13a01 100644
--- a/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23/changes/alldiffs_index_removals.html
@@ -332,7 +332,7 @@
 <!-- Field View_backgroundTintMode -->
 <nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.View_backgroundTintMode" class="hiddenlink" target="rightframe"><strike>View_backgroundTintMode</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.Behavior.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.Behavior.html
index a6bbf2d..352dcfd 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.Behavior.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.Behavior.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.html
index 71e3167..cd2a11f 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.AppBarLayout.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.CollapsingToolbarLayout.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.CollapsingToolbarLayout.html
index 7244be9..d80f7ee 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.CollapsingToolbarLayout.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.CollapsingToolbarLayout.html
@@ -150,7 +150,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.NavigationView.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.NavigationView.html
index a38990a..5dd3104 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.NavigationView.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.NavigationView.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.Snackbar.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.Snackbar.html
index 9a53448..2247297 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.Snackbar.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.Snackbar.html
@@ -116,7 +116,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.Tab.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.Tab.html
index b7a01f5..a0ea052 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.Tab.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.Tab.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.html
index df626ac..bd3c8e6 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TabLayout.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TextInputLayout.html b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TextInputLayout.html
index 471e267..a9a7b49 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TextInputLayout.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.design.widget.TextInputLayout.html
@@ -165,7 +165,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v13.app.FragmentCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v13.app.FragmentCompat.html
index 9eb5b24..b61fb5a 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v13.app.FragmentCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v13.app.FragmentCompat.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder.html
index 3c6165f..f189083 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.ViewHolder.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.html
index b6d8863..cb2156a 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.html
@@ -179,7 +179,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.animation.AnimatorCompatHelper.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.animation.AnimatorCompatHelper.html
index 092a6c3..5d5a9fc 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.animation.AnimatorCompatHelper.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.animation.AnimatorCompatHelper.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.ActivityCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.ActivityCompat.html
index 76e8ce9..c318b70 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.ActivityCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.ActivityCompat.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.Fragment.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.Fragment.html
index 53a8bd5..2f56f59 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.Fragment.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.Fragment.html
@@ -190,7 +190,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.FragmentActivity.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.FragmentActivity.html
index 8d2321f..0338069 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.FragmentActivity.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.app.FragmentActivity.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.AsyncTaskLoader.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.AsyncTaskLoader.html
index 19be27c..5dfbe6c 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.AsyncTaskLoader.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.AsyncTaskLoader.html
@@ -133,7 +133,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.ContextCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.ContextCompat.html
index 6ed5b3e..64d09ac 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.ContextCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.ContextCompat.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.Loader.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.Loader.html
index d4c3bb0..f97def1 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.Loader.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.content.Loader.html
@@ -136,7 +136,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.DrawableCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.DrawableCompat.html
index 87fefee..ca42f3d 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.DrawableCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.DrawableCompat.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawable.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawable.html
index 7c72cf4..793bd8b 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawable.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawable.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.Builder.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.Builder.html
index c429c39..6ae7186 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.Builder.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.Builder.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.html
index 4053435..dde12a5 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.MediaDescriptionCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaControllerCompat.TransportControls.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaControllerCompat.TransportControls.html
index 4d10769..12743cd 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaControllerCompat.TransportControls.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaControllerCompat.TransportControls.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaSessionCompat.Callback.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaSessionCompat.Callback.html
index a0bbbf6..4acf244 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaSessionCompat.Callback.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.MediaSessionCompat.Callback.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.PlaybackStateCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.PlaybackStateCompat.html
index 29e5f0b..0f568c4 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.PlaybackStateCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.media.session.PlaybackStateCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.text.ICUCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.text.ICUCompat.html
index 5f9f31e..e357c50 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.text.ICUCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.text.ICUCompat.html
@@ -130,7 +130,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.ViewCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.ViewCompat.html
index 548502c..caaf19a 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.ViewCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.ViewCompat.html
@@ -122,7 +122,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html
index ce98f64..c60e7e1 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html
@@ -255,7 +255,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html
index f3ef666..6f2e809 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html
@@ -361,7 +361,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.DrawerLayout.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.DrawerLayout.html
index 3297157..c18ae6c 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.DrawerLayout.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.DrawerLayout.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.ExploreByTouchHelper.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.ExploreByTouchHelper.html
index 4026cd2..be8512f 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.ExploreByTouchHelper.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.ExploreByTouchHelper.html
@@ -123,7 +123,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.PopupWindowCompat.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.PopupWindowCompat.html
index 8a9b9c6..284dab4 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.PopupWindowCompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.PopupWindowCompat.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.SwipeRefreshLayout.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.SwipeRefreshLayout.html
index 91a99cb..1fb912f 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.SwipeRefreshLayout.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v4.widget.SwipeRefreshLayout.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.app.AppCompatDelegate.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.app.AppCompatDelegate.html
index 42ef289..9f768b9 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.app.AppCompatDelegate.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.app.AppCompatDelegate.html
@@ -137,7 +137,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.attr.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.attr.html
index cc28516..98d2c2c 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.attr.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.attr.html
@@ -221,7 +221,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.color.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.color.html
index 5f1a3f6..852d595 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.color.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.color.html
@@ -193,7 +193,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.dimen.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.dimen.html
index c4fba92..893ea25 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.dimen.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.dimen.html
@@ -158,7 +158,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.drawable.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.drawable.html
index 0bf5ce1..482e9ff 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.drawable.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.drawable.html
@@ -144,7 +144,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.id.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.id.html
index 2b34b3a..818a5b0 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.id.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.id.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.layout.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.layout.html
index 9d24903..a0a33fb 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.layout.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.layout.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.style.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.style.html
index 8b16f1c..d084de0 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.style.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.style.html
@@ -207,7 +207,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.styleable.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.styleable.html
index 5365376..c021cbe 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.styleable.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.appcompat.R.styleable.html
@@ -333,7 +333,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.graphics.Palette.Builder.html b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.graphics.Palette.Builder.html
index 3893441..e707730 100644
--- a/docs/html/sdk/support_api_diff/23/changes/android.support.v7.graphics.Palette.Builder.html
+++ b/docs/html/sdk/support_api_diff/23/changes/android.support.v7.graphics.Palette.Builder.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/changes-summary.html b/docs/html/sdk/support_api_diff/23/changes/changes-summary.html
index 3deee46e..75c1eb3 100644
--- a/docs/html/sdk/support_api_diff/23/changes/changes-summary.html
+++ b/docs/html/sdk/support_api_diff/23/changes/changes-summary.html
@@ -310,7 +310,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/23/changes/classes_index_additions.html
index 094fff5..bc69616 100644
--- a/docs/html/sdk/support_api_diff/23/changes/classes_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23/changes/classes_index_additions.html
@@ -160,7 +160,7 @@
 <A HREF="pkg_android.support.v4.content.html#SharedPreferencesCompat" class="hiddenlink" target="rightframe"><b>SharedPreferencesCompat</b></A><br>
 <A HREF="pkg_android.support.v4.content.html#SharedPreferencesCompat.EditorCompat" class="hiddenlink" target="rightframe"><b>SharedPreferencesCompat.EditorCompat</b></A><br>
 <A HREF="pkg_android.support.design.widget.html#Snackbar.Callback" class="hiddenlink" target="rightframe"><b>Snackbar.Callback</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/classes_index_all.html b/docs/html/sdk/support_api_diff/23/changes/classes_index_all.html
index cb1ed5f..33a23bf 100644
--- a/docs/html/sdk/support_api_diff/23/changes/classes_index_all.html
+++ b/docs/html/sdk/support_api_diff/23/changes/classes_index_all.html
@@ -419,7 +419,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/classes_index_changes.html b/docs/html/sdk/support_api_diff/23/changes/classes_index_changes.html
index b674f27..9588a73 100644
--- a/docs/html/sdk/support_api_diff/23/changes/classes_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23/changes/classes_index_changes.html
@@ -328,7 +328,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/classes_index_removals.html b/docs/html/sdk/support_api_diff/23/changes/classes_index_removals.html
index e6da73f..c466298 100644
--- a/docs/html/sdk/support_api_diff/23/changes/classes_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23/changes/classes_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/constructors_index_additions.html b/docs/html/sdk/support_api_diff/23/changes/constructors_index_additions.html
index d1e5215..ae8c0d3 100644
--- a/docs/html/sdk/support_api_diff/23/changes/constructors_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23/changes/constructors_index_additions.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.ctor_added(android.content.Context, android.util.AttributeSet, int)" class="hiddenlink" target="rightframe"><b>TextInputLayout</b>
 (<code>Context, AttributeSet, int</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/constructors_index_all.html b/docs/html/sdk/support_api_diff/23/changes/constructors_index_all.html
index 4618d88..401df57 100644
--- a/docs/html/sdk/support_api_diff/23/changes/constructors_index_all.html
+++ b/docs/html/sdk/support_api_diff/23/changes/constructors_index_all.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.ctor_added(android.content.Context, android.util.AttributeSet, int)" class="hiddenlink" target="rightframe"><b>TextInputLayout</b>
 (<code>Context, AttributeSet, int</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/constructors_index_changes.html b/docs/html/sdk/support_api_diff/23/changes/constructors_index_changes.html
index a5ca2ef..122cdce 100644
--- a/docs/html/sdk/support_api_diff/23/changes/constructors_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23/changes/constructors_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/constructors_index_removals.html b/docs/html/sdk/support_api_diff/23/changes/constructors_index_removals.html
index 74a09ba..dadd1cd 100644
--- a/docs/html/sdk/support_api_diff/23/changes/constructors_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23/changes/constructors_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/fields_index_additions.html b/docs/html/sdk/support_api_diff/23/changes/fields_index_additions.html
index 2f6ac9c..f9137b8 100644
--- a/docs/html/sdk/support_api_diff/23/changes/fields_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23/changes/fields_index_additions.html
@@ -444,7 +444,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_Button_Colored" class="hiddenlink" target="rightframe">Widget_AppCompat_Button_Colored</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/fields_index_all.html b/docs/html/sdk/support_api_diff/23/changes/fields_index_all.html
index a7f5e18..909dbcc 100644
--- a/docs/html/sdk/support_api_diff/23/changes/fields_index_all.html
+++ b/docs/html/sdk/support_api_diff/23/changes/fields_index_all.html
@@ -538,7 +538,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_Button_Colored" class="hiddenlink" target="rightframe">Widget_AppCompat_Button_Colored</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/fields_index_changes.html b/docs/html/sdk/support_api_diff/23/changes/fields_index_changes.html
index 0e2ccff..301881a 100644
--- a/docs/html/sdk/support_api_diff/23/changes/fields_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23/changes/fields_index_changes.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/fields_index_removals.html b/docs/html/sdk/support_api_diff/23/changes/fields_index_removals.html
index 5027374..174a576 100644
--- a/docs/html/sdk/support_api_diff/23/changes/fields_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23/changes/fields_index_removals.html
@@ -241,7 +241,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.View_backgroundTintMode" class="hiddenlink" target="rightframe"><strike>View_backgroundTintMode</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/jdiff_help.html b/docs/html/sdk/support_api_diff/23/changes/jdiff_help.html
index acb8508..125d4e8 100644
--- a/docs/html/sdk/support_api_diff/23/changes/jdiff_help.html
+++ b/docs/html/sdk/support_api_diff/23/changes/jdiff_help.html
@@ -120,7 +120,7 @@
 There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. 
 In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. 
 </BLOCKQUOTE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/jdiff_statistics.html b/docs/html/sdk/support_api_diff/23/changes/jdiff_statistics.html
index 4480788..1e865b7 100644
--- a/docs/html/sdk/support_api_diff/23/changes/jdiff_statistics.html
+++ b/docs/html/sdk/support_api_diff/23/changes/jdiff_statistics.html
@@ -467,7 +467,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/jdiff_topleftframe.html b/docs/html/sdk/support_api_diff/23/changes/jdiff_topleftframe.html
index 36f9836..6a2e76e 100644
--- a/docs/html/sdk/support_api_diff/23/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/support_api_diff/23/changes/jdiff_topleftframe.html
@@ -49,7 +49,7 @@
   <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="fields_index_all.html" TARGET="bottomleftframe">By Field</A></FONT><br></TD>
 </TR>
 </TABLE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/methods_index_additions.html b/docs/html/sdk/support_api_diff/23/changes/methods_index_additions.html
index 3cec9a3..c3e4176 100644
--- a/docs/html/sdk/support_api_diff/23/changes/methods_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23/changes/methods_index_additions.html
@@ -529,7 +529,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.validateRequestPermissionsRequestCode_added(int)" class="hiddenlink" target="rightframe"><b>validateRequestPermissionsRequestCode</b>
 (<code>int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/methods_index_all.html b/docs/html/sdk/support_api_diff/23/changes/methods_index_all.html
index 072b2ff..7b2f1d4 100644
--- a/docs/html/sdk/support_api_diff/23/changes/methods_index_all.html
+++ b/docs/html/sdk/support_api_diff/23/changes/methods_index_all.html
@@ -550,7 +550,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.validateRequestPermissionsRequestCode_added(int)" class="hiddenlink" target="rightframe"><b>validateRequestPermissionsRequestCode</b>
 (<code>int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/methods_index_changes.html b/docs/html/sdk/support_api_diff/23/changes/methods_index_changes.html
index d190580..90a0a23 100644
--- a/docs/html/sdk/support_api_diff/23/changes/methods_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23/changes/methods_index_changes.html
@@ -83,7 +83,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.html#android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter.setBackgroundColor_changed(int)" class="hiddenlink" target="rightframe">setBackgroundColor
 (<code>int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/methods_index_removals.html b/docs/html/sdk/support_api_diff/23/changes/methods_index_removals.html
index 25175750..ce89d27 100644
--- a/docs/html/sdk/support_api_diff/23/changes/methods_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23/changes/methods_index_removals.html
@@ -71,7 +71,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.app.Fragment.html#android.support.v4.app.Fragment.onAttach_removed(android.app.Activity)" class="hiddenlink" target="rightframe"><strike>onAttach</strike>
 (<code>Activity</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/packages_index_additions.html b/docs/html/sdk/support_api_diff/23/changes/packages_index_additions.html
index 446ee58..fc6d24d 100644
--- a/docs/html/sdk/support_api_diff/23/changes/packages_index_additions.html
+++ b/docs/html/sdk/support_api_diff/23/changes/packages_index_additions.html
@@ -59,7 +59,7 @@
 <A HREF="changes-summary.html#android.support.v7.graphics.drawable" class="hiddenlink" target="rightframe"><b>android.support.v7.graphics.drawable</b></A><br>
 <A HREF="changes-summary.html#android.support.v7.preference" class="hiddenlink" target="rightframe"><b>android.support.v7.preference</b></A><br>
 <A HREF="changes-summary.html#android.support.v8.renderscript" class="hiddenlink" target="rightframe"><b>android.support.v8.renderscript</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/packages_index_all.html b/docs/html/sdk/support_api_diff/23/changes/packages_index_all.html
index d1dbbe1..c770167 100644
--- a/docs/html/sdk/support_api_diff/23/changes/packages_index_all.html
+++ b/docs/html/sdk/support_api_diff/23/changes/packages_index_all.html
@@ -77,7 +77,7 @@
 <A HREF="changes-summary.html#android.support.v7.preference" class="hiddenlink" target="rightframe"><b>android.support.v7.preference</b></A><br>
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
 <A HREF="changes-summary.html#android.support.v8.renderscript" class="hiddenlink" target="rightframe"><b>android.support.v8.renderscript</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/packages_index_changes.html b/docs/html/sdk/support_api_diff/23/changes/packages_index_changes.html
index 730633e..2140313 100644
--- a/docs/html/sdk/support_api_diff/23/changes/packages_index_changes.html
+++ b/docs/html/sdk/support_api_diff/23/changes/packages_index_changes.html
@@ -68,7 +68,7 @@
 <A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
 <A HREF="pkg_android.support.v7.graphics.html" class="hiddenlink" target="rightframe">android.support.v7.graphics</A><br>
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/packages_index_removals.html b/docs/html/sdk/support_api_diff/23/changes/packages_index_removals.html
index d0ffabc..d5a825d 100644
--- a/docs/html/sdk/support_api_diff/23/changes/packages_index_removals.html
+++ b/docs/html/sdk/support_api_diff/23/changes/packages_index_removals.html
@@ -49,7 +49,7 @@
 </div>
 <br>
 <div id="indexTableEntries">
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.design.widget.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.design.widget.html
index a8630f7..6ebc3a7 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.design.widget.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.design.widget.html
@@ -169,7 +169,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v13.app.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v13.app.html
index c56e8a4..877fd6c 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v13.app.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v13.app.html
@@ -120,7 +120,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v17.leanback.widget.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v17.leanback.widget.html
index 3d7f780..ea3848e 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v17.leanback.widget.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v17.leanback.widget.html
@@ -112,7 +112,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.animation.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.animation.html
index 36965dd..4a51cf8 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.animation.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.animation.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.app.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.app.html
index 692e7ef..9fbee40 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.app.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.app.html
@@ -176,7 +176,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.content.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.content.html
index 44e9f81..9e654a6 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.content.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.content.html
@@ -169,7 +169,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.graphics.drawable.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.graphics.drawable.html
index 6139c8e..de77561 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.graphics.drawable.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.graphics.drawable.html
@@ -112,7 +112,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.html
index e6fe510..761e746 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.html
@@ -112,7 +112,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.session.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.session.html
index 9b0e472..18893f4 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.session.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.media.session.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.os.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.os.html
index 9a76a7b..2ed8d04 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.os.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.os.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.text.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.text.html
index b2a178a..c995ed8 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.text.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.text.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.accessibility.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.accessibility.html
index dcdbc56..ec69556 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.accessibility.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.accessibility.html
@@ -127,7 +127,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.html
index 2a955d3..2361c0f 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.view.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.widget.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.widget.html
index 482bf1f..c6b5e0c 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.widget.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v4.widget.html
@@ -141,7 +141,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.app.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.app.html
index 1dd5425..a99b641 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.app.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.app.html
@@ -120,7 +120,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.appcompat.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.appcompat.html
index e014278..eb5ed08 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.appcompat.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.appcompat.html
@@ -154,7 +154,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.graphics.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.graphics.html
index cb6c97b..9f88138 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.graphics.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.graphics.html
@@ -120,7 +120,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.util.html b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.util.html
index cc0065d..e4da229 100644
--- a/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.util.html
+++ b/docs/html/sdk/support_api_diff/23/changes/pkg_android.support.v7.util.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_additions.html
index cb62aa8..f73d864 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_additions.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_additions.html
@@ -933,7 +933,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.view.WindowInsetsCompat.html#android.support.v4.view.WindowInsetsCompat.ctor_added(android.support.v4.view.WindowInsetsCompat)" class="hiddenlink" target="rightframe"><b>WindowInsetsCompat</b>
 (<code>WindowInsetsCompat</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_all.html
index 719f9af..fb553f8 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_all.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_all.html
@@ -1313,7 +1313,7 @@
 <!-- Constructor WindowInsetsCompat -->
 &nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.WindowInsetsCompat.html#android.support.v4.view.WindowInsetsCompat.ctor_added(android.support.v4.view.WindowInsetsCompat)" class="hiddenlink" target="rightframe"><b>WindowInsetsCompat</b>
 (<code>WindowInsetsCompat</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_changes.html
index 854a487..4718b46 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_changes.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_changes.html
@@ -652,7 +652,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v4.view.WindowInsetsCompat.html" class="hiddenlink" target="rightframe">WindowInsetsCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_removals.html
index e6d9e07..179472a 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_removals.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/alldiffs_index_removals.html
@@ -110,7 +110,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.widget.StaggeredGridLayoutManager.html#android.support.v7.widget.StaggeredGridLayoutManager.TAG" class="hiddenlink" target="rightframe"><strike>TAG</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
index d6a9415..41ac368 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.html
index dd0b511..c4f0bfb 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsIntent.html
@@ -130,7 +130,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsSession.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsSession.html
index 16cac31..1ccaab3 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsSession.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.customtabs.CustomTabsSession.html
@@ -126,7 +126,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
index 7e1e59a..ad3dfd8 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.BottomSheetBehavior.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.BottomSheetBehavior.html
index e98c6f3..22984b8 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.BottomSheetBehavior.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.BottomSheetBehavior.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
index ebfdce1..a20a1ed 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
index 8cf6146..edc96ed 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
@@ -147,7 +147,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.LayoutParams.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.LayoutParams.html
index a36eab0..445da88 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.LayoutParams.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.LayoutParams.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.html
index 4a7247a..3ba5c1e 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.CoordinatorLayout.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
index 633db38..07099d6 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
@@ -144,7 +144,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TabLayout.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TabLayout.html
index 01d4b6d..a09656a 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TabLayout.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TabLayout.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TextInputLayout.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TextInputLayout.html
index ecd6fd4..9ad13eb 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TextInputLayout.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.design.widget.TextInputLayout.html
@@ -171,7 +171,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v14.preference.PreferenceFragment.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v14.preference.PreferenceFragment.html
index 9b31c9e..6b23c17 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v14.preference.PreferenceFragment.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v14.preference.PreferenceFragment.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder.html
index 9df6536..9f1f00c 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.ViewHolder.html
@@ -136,7 +136,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.html
index 16b03ad..a0b0aa9 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.AbstractMediaItemPresenter.html
@@ -151,7 +151,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.ObjectAdapter.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.ObjectAdapter.html
index 3e3ded0..3dad1a2 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.ObjectAdapter.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.leanback.widget.ObjectAdapter.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.preference.LeanbackSettingsFragment.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.preference.LeanbackSettingsFragment.html
index 6e54465..690328a 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.preference.LeanbackSettingsFragment.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v17.preference.LeanbackSettingsFragment.html
@@ -94,7 +94,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
index 0600e44..a353745 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
@@ -126,7 +126,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityCompat.html
index 74ae6f6..95b4fc6 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityCompat.html
@@ -129,7 +129,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityOptionsCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityOptionsCompat.html
index ce96b49..e675b7f 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityOptionsCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ActivityOptionsCompat.html
@@ -165,7 +165,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.FragmentController.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.FragmentController.html
index 13b2ce1..dfc1a60 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.FragmentController.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.FragmentController.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ServiceCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ServiceCompat.html
index 6a404eb..211a88f 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ServiceCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.ServiceCompat.html
@@ -130,7 +130,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.SharedElementCallback.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.SharedElementCallback.html
index 1495fb4..7394059 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.SharedElementCallback.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.app.SharedElementCallback.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.content.ContextCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.content.ContextCompat.html
index 1d6b9b1..b6157a2 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.content.ContextCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.content.ContextCompat.html
@@ -111,7 +111,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
index 3408caa..92f1ba4 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserCompat.MediaItem.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserCompat.MediaItem.html
index acc16c1..52da3d4 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserCompat.MediaItem.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserCompat.MediaItem.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserServiceCompat.BrowserRoot.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserServiceCompat.BrowserRoot.html
index 7a9c73311..7ea97f3 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserServiceCompat.BrowserRoot.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaBrowserServiceCompat.BrowserRoot.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaDescriptionCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaDescriptionCompat.html
index fbbaa19..fa1d610 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaDescriptionCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaDescriptionCompat.html
@@ -157,7 +157,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaMetadataCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaMetadataCompat.html
index e52493b..7e0f137 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaMetadataCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.MediaMetadataCompat.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaButtonReceiver.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaButtonReceiver.html
index 3e2c68b..65467b8 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaButtonReceiver.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaButtonReceiver.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.QueueItem.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.QueueItem.html
index 5ce173f..e3b0184 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.QueueItem.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.QueueItem.html
@@ -133,7 +133,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.html
index ee71244..90bd5eb 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.MediaSessionCompat.html
@@ -126,7 +126,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html
index 2c54c1d..07e2449 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.media.session.PlaybackStateCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.os.BuildCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.os.BuildCompat.html
index eb59ddb..372415a 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.os.BuildCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.os.BuildCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.KeyEventCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.KeyEventCompat.html
index b5f4371..d62437e 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.KeyEventCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.KeyEventCompat.html
@@ -141,7 +141,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.MotionEventCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.MotionEventCompat.html
index 9f85dab..8f58037 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.MotionEventCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.MotionEventCompat.html
@@ -161,7 +161,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewCompat.html
index 1b4ea0f..0974230 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewCompat.html
@@ -181,7 +181,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
index dcb2023..3eec7fa0a 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
@@ -111,7 +111,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.WindowInsetsCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.WindowInsetsCompat.html
index e0f77c9..c5c1d22 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.WindowInsetsCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.WindowInsetsCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
index 6ff46b8..1f9801f 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
@@ -158,7 +158,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat.html
index 5d63b93a..923ec80 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat.html
@@ -110,7 +110,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
index 004d89e..defa406 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
@@ -143,7 +143,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html
index 695028b..d6f719e 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat.html
@@ -157,7 +157,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat.html
index 17109ec..d087e4a 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat.html
index 30df540..84fc73b 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat.html
index 1d5a250..41abf7e 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html
index 727576d..005616a 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.html
@@ -144,7 +144,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeProviderCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeProviderCompat.html
index 101070c..bd6b7f8 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeProviderCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityNodeProviderCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityWindowInfoCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityWindowInfoCompat.html
index a3b8d96..40f3ca2 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityWindowInfoCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.view.accessibility.AccessibilityWindowInfoCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnCloseListenerCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnCloseListenerCompat.html
index cba004e..3d9f2ea 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnCloseListenerCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnCloseListenerCompat.html
@@ -95,7 +95,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnQueryTextListenerCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnQueryTextListenerCompat.html
index c15d1b9..df0f3e1 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnQueryTextListenerCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.OnQueryTextListenerCompat.html
@@ -95,7 +95,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.html
index cbb3925..4af1e46 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SearchViewCompat.html
@@ -121,7 +121,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SwipeRefreshLayout.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SwipeRefreshLayout.html
index 77dbdf6..5848782 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SwipeRefreshLayout.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.SwipeRefreshLayout.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.TextViewCompat.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.TextViewCompat.html
index a803634..87b9e69 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.TextViewCompat.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v4.widget.TextViewCompat.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.ActionBarDrawerToggle.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.ActionBarDrawerToggle.html
index 2a864f0..bc8abd6 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.ActionBarDrawerToggle.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.ActionBarDrawerToggle.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.AppCompatDelegate.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.AppCompatDelegate.html
index adfcabb..7b131e6 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.AppCompatDelegate.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.app.AppCompatDelegate.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.content.res.AppCompatResources.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.content.res.AppCompatResources.html
index e26c32b..02f43fd 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.content.res.AppCompatResources.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.content.res.AppCompatResources.html
@@ -108,7 +108,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.graphics.Palette.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.graphics.Palette.html
index f588384..1999a48 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.graphics.Palette.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.graphics.Palette.html
@@ -115,7 +115,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.util.SortedList.Callback.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.util.SortedList.Callback.html
index d2350979..95be79c 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.util.SortedList.Callback.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.util.SortedList.Callback.html
@@ -138,7 +138,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearLayoutManager.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearLayoutManager.html
index cf5c0f6..2fdfb0e 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearLayoutManager.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearLayoutManager.html
@@ -109,7 +109,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearSmoothScroller.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearSmoothScroller.html
index 3e13735..5cf79ee 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearSmoothScroller.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.LinearSmoothScroller.html
@@ -112,7 +112,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.RecyclerView.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.RecyclerView.html
index d5e36f0..5411a1f 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.RecyclerView.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.RecyclerView.html
@@ -116,7 +116,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.StaggeredGridLayoutManager.html b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.StaggeredGridLayoutManager.html
index 640ef38..9d0ab87 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.StaggeredGridLayoutManager.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/android.support.v7.widget.StaggeredGridLayoutManager.html
@@ -124,7 +124,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/changes-summary.html b/docs/html/sdk/support_api_diff/24.2.0/changes/changes-summary.html
index 12dfb4e..4456c22 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/changes-summary.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/changes-summary.html
@@ -315,7 +315,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_additions.html
index f3eb2ed..acb8115 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_additions.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_additions.html
@@ -291,7 +291,7 @@
 <A HREF="pkg_android.support.v7.widget.html#Toolbar.LayoutParams" class="hiddenlink" target="rightframe"><b>Toolbar.LayoutParams</b></A><br>
 <A HREF="pkg_android.support.v7.widget.html#Toolbar.OnMenuItemClickListener" class="hiddenlink" target="rightframe"><b><i>Toolbar.OnMenuItemClickListener</i></b></A><br>
 <A HREF="pkg_android.support.v7.widget.html#Toolbar.SavedState" class="hiddenlink" target="rightframe"><b>Toolbar.SavedState</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_all.html b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_all.html
index 410ac8a..3e77bf2 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_all.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_all.html
@@ -514,7 +514,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v4.view.WindowInsetsCompat.html" class="hiddenlink" target="rightframe">WindowInsetsCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_changes.html b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_changes.html
index 1baef5c..58fe615 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_changes.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_changes.html
@@ -380,7 +380,7 @@
  <a href="#topheader"><font size="-2">TOP</font></a>
 <p><div style="line-height:1.5em;color:black">
 <A HREF="android.support.v4.view.WindowInsetsCompat.html" class="hiddenlink" target="rightframe">WindowInsetsCompat</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_removals.html b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_removals.html
index e6da73f..c466298 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_removals.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/classes_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_additions.html b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_additions.html
index b0c0587..312effc 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_additions.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_additions.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.view.WindowInsetsCompat.html#android.support.v4.view.WindowInsetsCompat.ctor_added(android.support.v4.view.WindowInsetsCompat)" class="hiddenlink" target="rightframe"><b>WindowInsetsCompat</b>
 (<code>WindowInsetsCompat</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_all.html b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_all.html
index 91568db..24310b7 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_all.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_all.html
@@ -71,7 +71,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.view.WindowInsetsCompat.html#android.support.v4.view.WindowInsetsCompat.ctor_added(android.support.v4.view.WindowInsetsCompat)" class="hiddenlink" target="rightframe"><b>WindowInsetsCompat</b>
 (<code>WindowInsetsCompat</code>)</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_changes.html b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_changes.html
index b4142ed..62a75f8c 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_changes.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_changes.html
@@ -61,7 +61,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.content.ContextCompat.html#android.support.v4.content.ContextCompat.ctor_changed()" class="hiddenlink" target="rightframe">ContextCompat
 ()</A></nobr>&nbsp;constructor<br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_removals.html b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_removals.html
index f1a9952..2fbd2e1 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_removals.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/constructors_index_removals.html
@@ -47,7 +47,7 @@
 <div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
 Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
 </div>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_additions.html b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_additions.html
index 8923dbe..cdb8ee8 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_additions.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_additions.html
@@ -253,7 +253,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v4.view.accessibility.AccessibilityEventCompat.html#android.support.v4.view.accessibility.AccessibilityEventCompat.TYPE_WINDOWS_CHANGED" class="hiddenlink" target="rightframe">TYPE_WINDOWS_CHANGED</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_all.html b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_all.html
index 19cebb7..14b3e97 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_all.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_all.html
@@ -285,7 +285,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v4.view.accessibility.AccessibilityEventCompat.html#android.support.v4.view.accessibility.AccessibilityEventCompat.TYPE_WINDOWS_CHANGED" class="hiddenlink" target="rightframe">TYPE_WINDOWS_CHANGED</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_changes.html b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_changes.html
index b5ab769..c72b2de 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_changes.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_changes.html
@@ -57,7 +57,7 @@
 </nobr><br>
 <nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.OVER_SCROLL_NEVER" class="hiddenlink" target="rightframe">OVER_SCROLL_NEVER</A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_removals.html b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_removals.html
index 09ffac4..61820d1 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_removals.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/fields_index_removals.html
@@ -53,7 +53,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.widget.StaggeredGridLayoutManager.html#android.support.v7.widget.StaggeredGridLayoutManager.TAG" class="hiddenlink" target="rightframe"><strike>TAG</strike></A>
 </nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_help.html b/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_help.html
index ca0931f..966dda8 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_help.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_help.html
@@ -120,7 +120,7 @@
 There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. 
 In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. 
 </BLOCKQUOTE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_statistics.html b/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_statistics.html
index 698dbec..7010da6 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_statistics.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_statistics.html
@@ -583,7 +583,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_topleftframe.html b/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_topleftframe.html
index 36f9836..6a2e76e 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_topleftframe.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/jdiff_topleftframe.html
@@ -49,7 +49,7 @@
   <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="fields_index_all.html" TARGET="bottomleftframe">By Field</A></FONT><br></TD>
 </TR>
 </TABLE>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_additions.html b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_additions.html
index 508018e..419a607 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_additions.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_additions.html
@@ -434,7 +434,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.media.session.PlaybackStateCompat.html#android.support.v4.media.session.PlaybackStateCompat.toKeyCode_added(long)" class="hiddenlink" target="rightframe"><b>toKeyCode</b>
 (<code>long</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_all.html b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_all.html
index a52d5c9..d33bfc0 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_all.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_all.html
@@ -565,7 +565,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v4.media.session.PlaybackStateCompat.html#android.support.v4.media.session.PlaybackStateCompat.toKeyCode_added(long)" class="hiddenlink" target="rightframe"><b>toKeyCode</b>
 (<code>long</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_changes.html b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_changes.html
index 5faae42..ef008cb 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_changes.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_changes.html
@@ -208,7 +208,7 @@
 (<code>int, Bitmap, String</code>)</A></nobr><br>
 <nobr><A HREF="android.support.v4.view.KeyEventCompat.html#android.support.v4.view.KeyEventCompat.startTracking_changed(android.view.KeyEvent)" class="hiddenlink" target="rightframe">startTracking
 (<code>KeyEvent</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_removals.html b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_removals.html
index 062ac8f..1c0c6be 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_removals.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/methods_index_removals.html
@@ -79,7 +79,7 @@
 <p><div style="line-height:1.5em;color:black">
 <nobr><A HREF="android.support.v7.widget.LinearLayoutManager.html#android.support.v7.widget.LinearLayoutManager.prepareForDrop_removed(android.view.View, android.view.View, int, int)" class="hiddenlink" target="rightframe"><strike>prepareForDrop</strike>
 (<code>View, View, int, int</code>)</A></nobr><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_additions.html b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_additions.html
index 2eff0f7..bb88d9f 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_additions.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_additions.html
@@ -52,7 +52,7 @@
 <A NAME="A"></A>
 <A HREF="changes-summary.html#android.support.transition" class="hiddenlink" target="rightframe"><b>android.support.transition</b></A><br>
 <A HREF="changes-summary.html#android.support.v4.text.util" class="hiddenlink" target="rightframe"><b>android.support.v4.text.util</b></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_all.html b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_all.html
index 58e51ed..78805db 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_all.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_all.html
@@ -77,7 +77,7 @@
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
 <A HREF="pkg_android.support.v7.widget.html" class="hiddenlink" target="rightframe">android.support.v7.widget</A><br>
 <A HREF="changes-summary.html#android.support.v8.renderscript" class="hiddenlink" target="rightframe"><strike>android.support.v8.renderscript</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_changes.html b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_changes.html
index 1d9e428..f5f6425 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_changes.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_changes.html
@@ -72,7 +72,7 @@
 <A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
 <A HREF="pkg_android.support.v7.util.html" class="hiddenlink" target="rightframe">android.support.v7.util</A><br>
 <A HREF="pkg_android.support.v7.widget.html" class="hiddenlink" target="rightframe">android.support.v7.widget</A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_removals.html b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_removals.html
index d52d40d..ce5ca58 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_removals.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/packages_index_removals.html
@@ -53,7 +53,7 @@
 <A HREF="changes-summary.html#android.support.v7.appcompat" class="hiddenlink" target="rightframe"><strike>android.support.v7.appcompat</strike></A><br>
 <A HREF="changes-summary.html#android.support.v7.recyclerview" class="hiddenlink" target="rightframe"><strike>android.support.v7.recyclerview</strike></A><br>
 <A HREF="changes-summary.html#android.support.v8.renderscript" class="hiddenlink" target="rightframe"><strike>android.support.v8.renderscript</strike></A><br>
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.customtabs.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.customtabs.html
index 5959d63..45a31ff 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.customtabs.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.customtabs.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.design.widget.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.design.widget.html
index 510b9bd..a311b48 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.design.widget.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.design.widget.html
@@ -161,7 +161,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v14.preference.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v14.preference.html
index 84efadc6..f24be00 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v14.preference.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v14.preference.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.leanback.widget.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.leanback.widget.html
index 4ce1f32..c07a487 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.leanback.widget.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.leanback.widget.html
@@ -119,7 +119,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.preference.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.preference.html
index ad0aadd..c61d79d 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.preference.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v17.preference.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.accessibilityservice.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.accessibilityservice.html
index e904a76..2c0f684 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.accessibilityservice.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.accessibilityservice.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.app.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.app.html
index f8e4cb1..58ed06f9 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.app.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.app.html
@@ -148,7 +148,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.content.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.content.html
index 31aa1da..65dd616 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.content.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.content.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.graphics.drawable.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.graphics.drawable.html
index b1efab3..f8b31a5 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.graphics.drawable.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.graphics.drawable.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.html
index 612a1a0..5300c86 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.html
@@ -126,7 +126,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.session.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.session.html
index 3e46335..459d0c3 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.session.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.media.session.html
@@ -126,7 +126,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.os.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.os.html
index b250855..6d7f399 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.os.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.os.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.util.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.util.html
index d34506e..6f0e777 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.util.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.util.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.accessibility.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.accessibility.html
index a6362fb..d5d126c 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.accessibility.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.accessibility.html
@@ -190,7 +190,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.html
index 10b1334..d720d41 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.view.html
@@ -133,7 +133,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.widget.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.widget.html
index 5ed0f65..2efef45 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.widget.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v4.widget.html
@@ -162,7 +162,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.app.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.app.html
index 8eb58aa..f36cba5 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.app.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.app.html
@@ -162,7 +162,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.content.res.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.content.res.html
index 90787f7..2e4b703 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.content.res.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.content.res.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.graphics.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.graphics.html
index bd9cf24..439c8d3 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.graphics.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.graphics.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.preference.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.preference.html
index b80e005..b2b781b 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.preference.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.preference.html
@@ -105,7 +105,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.util.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.util.html
index 365022f..c35fb8c 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.util.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.util.html
@@ -148,7 +148,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.widget.html b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.widget.html
index e07d5b8..72e5497 100644
--- a/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.widget.html
+++ b/docs/html/sdk/support_api_diff/24.2.0/changes/pkg_android.support.v7.widget.html
@@ -449,7 +449,7 @@
     </div> <!-- end footer -->
     </div><!-- end doc-content -->
     </div> <!-- end body-content --> 
-<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+<script src="https://www.google-analytics.com/ga.js" type="text/javascript">
 </script>
 <script type="text/javascript">
   try {
diff --git a/graphics/java/android/graphics/Atlas.java b/graphics/java/android/graphics/Atlas.java
deleted file mode 100644
index e0a5345..0000000
--- a/graphics/java/android/graphics/Atlas.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*
- * Copyright (C) 2013 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 android.graphics;
-
-/**
- * @hide
- */
-public class Atlas {
-    /**
-     * WARNING: These flag values are part of the on-disk configuration information,
-     * do not change their values.
-     */
-
-    /** DELETED: FLAG_ROTATION = 0x01 */
-
-    /**
-     * This flag indicates whether the packing algorithm should leave
-     * an empty 1 pixel wide border around each bitmap. This border can
-     * be useful if the content of the atlas will be used in OpenGL using
-     * bilinear filtering.
-     */
-    public static final int FLAG_ADD_PADDING = 0x2;
-    /**
-     * Default flags: allow rotations and add padding.
-     */
-    public static final int FLAG_DEFAULTS = FLAG_ADD_PADDING;
-
-    /**
-     * Each type defines a different packing algorithm that can
-     * be used by an {@link Atlas}. The best algorithm to use
-     * will depend on the source dataset and the dimensions of
-     * the atlas.
-     */
-    public enum Type {
-        SliceMinArea,
-        SliceMaxArea,
-        SliceShortAxis,
-        SliceLongAxis
-    }
-
-    /**
-     * Represents a bitmap packed in the atlas. Each entry has a location in
-     * pixels in the atlas and a rotation flag.
-     */
-    public static class Entry {
-        /**
-         * Location, in pixels, of the bitmap on the X axis in the atlas.
-         */
-        public int x;
-        /**
-         * Location, in pixels, of the bitmap on the Y axis in the atlas.
-         */
-        public int y;
-    }
-
-    private final Policy mPolicy;
-
-    /**
-     * Creates a new atlas with the specified algorithm and dimensions
-     * in pixels. Calling this constructor is equivalent to calling
-     * {@link #Atlas(Atlas.Type, int, int, int)} with {@link #FLAG_DEFAULTS}.
-     *
-     * @param type The algorithm to use to pack rectangles in the atlas
-     * @param width The width of the atlas in pixels
-     * @param height The height of the atlas in pixels
-     *
-     * @see #Atlas(Atlas.Type, int, int, int)
-     */
-    public Atlas(Type type, int width, int height) {
-        this(type, width, height, FLAG_DEFAULTS);
-    }
-
-    /**
-     * Creates a new atlas with the specified algorithm and dimensions
-     * in pixels. A set of flags can also be specified to control the
-     * behavior of the atlas.
-     *
-     * @param type The algorithm to use to pack rectangles in the atlas
-     * @param width The width of the atlas in pixels
-     * @param height The height of the atlas in pixels
-     * @param flags Optional flags to control the behavior of the atlas:
-     *              {@link #FLAG_ADD_PADDING}, {@link #FLAG_ALLOW_ROTATIONS}
-     *
-     * @see #Atlas(Atlas.Type, int, int)
-     */
-    public Atlas(Type type, int width, int height, int flags) {
-        mPolicy = findPolicy(type, width, height, flags);
-    }
-
-    /**
-     * Packs a rectangle of the specified dimensions in this atlas.
-     *
-     * @param width The width of the rectangle to pack in the atlas
-     * @param height The height of the rectangle to pack in the atlas
-     *
-     * @return An {@link Entry} instance if the rectangle was packed in
-     *         the atlas, or null if the rectangle could not fit
-     *
-     * @see #pack(int, int, Atlas.Entry)
-     */
-    public Entry pack(int width, int height) {
-        return pack(width, height, null);
-    }
-
-    /**
-     * Packs a rectangle of the specified dimensions in this atlas.
-     *
-     * @param width The width of the rectangle to pack in the atlas
-     * @param height The height of the rectangle to pack in the atlas
-     * @param entry Out parameter that will be filled in with the location
-     *              and attributes of the packed rectangle, can be null
-     *
-     * @return An {@link Entry} instance if the rectangle was packed in
-     *         the atlas, or null if the rectangle could not fit
-     *
-     * @see #pack(int, int)
-     */
-    public Entry pack(int width, int height, Entry entry) {
-        if (entry == null) entry = new Entry();
-        return mPolicy.pack(width, height, entry);
-    }
-
-    private static Policy findPolicy(Type type, int width, int height, int flags) {
-        switch (type) {
-            case SliceMinArea:
-                return new SlicePolicy(width, height, flags,
-                        new SlicePolicy.MinAreaSplitDecision());
-            case SliceMaxArea:
-                return new SlicePolicy(width, height, flags,
-                        new SlicePolicy.MaxAreaSplitDecision());
-            case SliceShortAxis:
-                return new SlicePolicy(width, height, flags,
-                        new SlicePolicy.ShorterFreeAxisSplitDecision());
-            case SliceLongAxis:
-                return new SlicePolicy(width, height, flags,
-                        new SlicePolicy.LongerFreeAxisSplitDecision());
-        }
-        return null;
-    }
-
-    /**
-     * A policy defines how the atlas performs the packing operation.
-     */
-    private static abstract class Policy {
-        abstract Entry pack(int width, int height, Entry entry);
-    }
-
-    /**
-     * The Slice algorightm divides the remaining empty space either
-     * horizontally or vertically after a bitmap is placed in the atlas.
-     *
-     * NOTE: the algorithm is explained below using a tree but is
-     * implemented using a linked list instead for performance reasons.
-     *
-     * The algorithm starts with a single empty cell covering the entire
-     * atlas:
-     *
-     *  -----------------------
-     * |                       |
-     * |                       |
-     * |                       |
-     * |      Empty space      |
-     * |          (C0)         |
-     * |                       |
-     * |                       |
-     * |                       |
-     *  -----------------------
-     *
-     * The tree of cells looks like this:
-     *
-     * N0(free)
-     *
-     * The algorithm then places a bitmap B1, if possible:
-     *
-     *  -----------------------
-     * |        |              |
-     * |   B1   |              |
-     * |        |              |
-     * |--------               |
-     * |                       |
-     * |                       |
-     * |                       |
-     * |                       |
-     *  -----------------------
-     *
-     *  After placing a bitmap in an empty cell, the algorithm splits
-     *  the remaining space in two new empty cells. The split can occur
-     *  vertically or horizontally (this is controlled by the "split
-     *  decision" parameter of the algorithm.)
-     *
-     *  Here is for the instance the result of a vertical split:
-     *
-     *  -----------------------
-     * |        |              |
-     * |   B1   |              |
-     * |        |              |
-     * |--------|      C2      |
-     * |        |              |
-     * |        |              |
-     * |   C1   |              |
-     * |        |              |
-     *  -----------------------
-     *
-     * The cells tree now looks like this:
-     *
-     *       C0(occupied)
-     *           / \
-     *          /   \
-     *         /     \
-     *        /       \
-     *    C1(free)  C2(free)
-     *
-     * For each bitmap to place in the atlas, the Slice algorithm
-     * will visit the free cells until it finds one where a bitmap can
-     * fit. It will then split the now occupied cell and proceed onto
-     * the next bitmap.
-     */
-    private static class SlicePolicy extends Policy {
-        private final Cell mRoot = new Cell();
-
-        private final SplitDecision mSplitDecision;
-
-        private final int mPadding;
-
-        /**
-         * A cell represents a sub-rectangle of the atlas. A cell is
-         * a node in a linked list representing the available free
-         * space in the atlas.
-         */
-        private static class Cell {
-            int x;
-            int y;
-
-            int width;
-            int height;
-
-            Cell next;
-
-            @Override
-            public String toString() {
-                return String.format("cell[x=%d y=%d width=%d height=%d", x, y, width, height);
-            }
-        }
-
-        SlicePolicy(int width, int height, int flags, SplitDecision splitDecision) {
-            mPadding = (flags & FLAG_ADD_PADDING) != 0 ? 1 : 0;
-
-            // The entire atlas is empty at first, minus padding
-            Cell first = new Cell();
-            first.x = first.y = mPadding;
-            first.width = width - 2 * mPadding;
-            first.height = height - 2 * mPadding;
-
-            mRoot.next = first;
-            mSplitDecision = splitDecision;
-        }
-
-        @Override
-        Entry pack(int width, int height, Entry entry) {
-            Cell cell = mRoot.next;
-            Cell prev = mRoot;
-
-            while (cell != null) {
-                if (insert(cell, prev, width, height, entry)) {
-                    return entry;
-                }
-
-                prev = cell;
-                cell = cell.next;
-            }
-
-            return null;
-        }
-
-        /**
-         * Defines how the remaining empty space should be split up:
-         * vertically or horizontally.
-         */
-        private static interface SplitDecision {
-            /**
-             * Returns true if the remaining space defined by
-             * <code>freeWidth</code> and <code>freeHeight</code>
-             * should be split horizontally.
-             *
-             * @param freeWidth The rectWidth of the free space after packing a rectangle
-             * @param freeHeight The rectHeight of the free space after packing a rectangle
-             * @param rectWidth The rectWidth of the rectangle that was packed in a cell
-             * @param rectHeight The rectHeight of the rectangle that was packed in a cell
-             */
-            boolean splitHorizontal(int freeWidth, int freeHeight,
-                    int rectWidth, int rectHeight);
-        }
-
-        // Splits the free area horizontally to minimize the horizontal section area
-        private static class MinAreaSplitDecision implements SplitDecision {
-            @Override
-            public boolean splitHorizontal(int freeWidth, int freeHeight,
-                    int rectWidth, int rectHeight) {
-                return rectWidth * freeHeight > freeWidth * rectHeight;
-            }
-        }
-
-        // Splits the free area horizontally to maximize the horizontal section area
-        private static class MaxAreaSplitDecision implements SplitDecision {
-            @Override
-            public boolean splitHorizontal(int freeWidth, int freeHeight,
-                    int rectWidth, int rectHeight) {
-                return rectWidth * freeHeight <= freeWidth * rectHeight;
-            }
-        }
-
-        // Splits the free area horizontally if the horizontal axis is shorter
-        private static class ShorterFreeAxisSplitDecision implements SplitDecision {
-            @Override
-            public boolean splitHorizontal(int freeWidth, int freeHeight,
-                    int rectWidth, int rectHeight) {
-                return freeWidth <= freeHeight;
-            }
-        }
-
-        // Splits the free area horizontally if the vertical axis is shorter
-        private static class LongerFreeAxisSplitDecision implements SplitDecision {
-            @Override
-            public boolean splitHorizontal(int freeWidth, int freeHeight,
-                    int rectWidth, int rectHeight) {
-                return freeWidth > freeHeight;
-            }
-        }
-
-        /**
-         * Attempts to pack a rectangle of specified dimensions in the available
-         * empty space.
-         *
-         * @param cell The cell representing free space in which to pack the rectangle
-         * @param prev The previous cell in the free space linked list
-         * @param width The width of the rectangle to pack
-         * @param height The height of the rectangle to pack
-         * @param entry Stores the location of the packged rectangle, if it fits
-         *
-         * @return True if the rectangle was packed in the atlas, false otherwise
-         */
-        private boolean insert(Cell cell, Cell prev, int width, int height, Entry entry) {
-            if (cell.width < width || cell.height < height) {
-                return false;
-            }
-
-            // Remaining free space after packing the rectangle
-            int deltaWidth = cell.width - width;
-            int deltaHeight = cell.height - height;
-
-            // Split the remaining free space into two new cells
-            Cell first = new Cell();
-            Cell second = new Cell();
-
-            first.x = cell.x + width + mPadding;
-            first.y = cell.y;
-            first.width = deltaWidth - mPadding;
-
-            second.x = cell.x;
-            second.y = cell.y + height + mPadding;
-            second.height = deltaHeight - mPadding;
-
-            if (mSplitDecision.splitHorizontal(deltaWidth, deltaHeight,
-                    width, height)) {
-                first.height = height;
-                second.width = cell.width;
-            } else {
-                first.height = cell.height;
-                second.width = width;
-
-                // The order of the cells matters for efficient packing
-                // We want to give priority to the cell chosen by the
-                // split decision heuristic
-                Cell temp = first;
-                first = second;
-                second = temp;
-            }
-
-            // Remove degenerate cases to keep the free list as small as possible
-            if (first.width > 0 && first.height > 0) {
-                prev.next = first;
-                prev = first;
-            }
-
-            if (second.width > 0 && second.height > 0) {
-                prev.next = second;
-                second.next = cell.next;
-            } else {
-                prev.next = cell.next;
-            }
-
-            // The cell is now completely removed from the free list
-            cell.next = null;
-
-            // Return the location and rotation of the packed rectangle
-            entry.x = cell.x;
-            entry.y = cell.y;
-
-            return true;
-        }
-    }
-}
diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java
index df107f5..6deeb0d 100644
--- a/graphics/java/android/graphics/drawable/BitmapDrawable.java
+++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java
@@ -49,7 +49,6 @@
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
-import java.util.Collection;
 
 /**
  * A Drawable that wraps a bitmap and can be tiled, stretched, or aligned. You can create a
@@ -957,14 +956,6 @@
         }
 
         @Override
-        public int addAtlasableBitmaps(Collection<Bitmap> atlasList) {
-            if (isAtlasable(mBitmap) && atlasList.add(mBitmap)) {
-                return mBitmap.getWidth() * mBitmap.getHeight();
-            }
-            return 0;
-        }
-
-        @Override
         public Drawable newDrawable() {
             return new BitmapDrawable(this, null);
         }
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index 10f0dda..6ddc2d7 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -58,7 +58,6 @@
 import java.io.InputStream;
 import java.lang.ref.WeakReference;
 import java.util.Arrays;
-import java.util.Collection;
 
 /**
  * A Drawable is a general abstraction for "something that can be drawn."  Most
@@ -1367,19 +1366,6 @@
         public abstract @Config int getChangingConfigurations();
 
         /**
-         * @return Total pixel count
-         * @hide
-         */
-        public int addAtlasableBitmaps(@NonNull Collection<Bitmap> atlasList) {
-            return 0;
-        }
-
-        /** @hide */
-        protected final boolean isAtlasable(@Nullable Bitmap bitmap) {
-            return bitmap != null && bitmap.getConfig() == Bitmap.Config.ARGB_8888;
-        }
-
-        /**
          * Return whether this constant state can have a theme applied.
          */
         public boolean canApplyTheme() {
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java
index c7a3c75..abdc2b9 100644
--- a/graphics/java/android/graphics/drawable/DrawableContainer.java
+++ b/graphics/java/android/graphics/drawable/DrawableContainer.java
@@ -21,7 +21,6 @@
 import android.content.res.ColorStateList;
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
-import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.Insets;
@@ -35,8 +34,6 @@
 import android.util.SparseArray;
 import android.view.View;
 
-import java.util.Collection;
-
 /**
  * A helper class that contains several {@link Drawable}s and selects which one to use.
  *
@@ -1194,19 +1191,6 @@
             return true;
         }
 
-        /** @hide */
-        @Override
-        public int addAtlasableBitmaps(Collection<Bitmap> atlasList) {
-            final int N = mNumChildren;
-            int pixelCount = 0;
-            for (int i = 0; i < N; i++) {
-                final ConstantState state = getChild(i).getConstantState();
-                if (state != null) {
-                    pixelCount += state.addAtlasableBitmaps(atlasList);
-                }
-            }
-            return pixelCount;
-        }
     }
 
     protected void setConstantState(DrawableContainerState state) {
diff --git a/graphics/java/android/graphics/drawable/DrawableWrapper.java b/graphics/java/android/graphics/drawable/DrawableWrapper.java
index 5abfc54..5887939 100644
--- a/graphics/java/android/graphics/drawable/DrawableWrapper.java
+++ b/graphics/java/android/graphics/drawable/DrawableWrapper.java
@@ -28,7 +28,6 @@
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
 import android.content.res.TypedArray;
-import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.Insets;
@@ -41,7 +40,6 @@
 import android.view.View;
 
 import java.io.IOException;
-import java.util.Collection;
 
 /**
  * Drawable container with only one child element.
@@ -508,15 +506,6 @@
         }
 
         @Override
-        public int addAtlasableBitmaps(Collection<Bitmap> atlasList) {
-            final Drawable.ConstantState state = mDrawableState;
-            if (state != null) {
-                return state.addAtlasableBitmaps(atlasList);
-            }
-            return 0;
-        }
-
-        @Override
         public Drawable newDrawable() {
             return newDrawable(null);
         }
diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java
index c30c4c2..e09fea5 100644
--- a/graphics/java/android/graphics/drawable/LayerDrawable.java
+++ b/graphics/java/android/graphics/drawable/LayerDrawable.java
@@ -23,7 +23,6 @@
 import android.content.res.Resources;
 import android.content.res.Resources.Theme;
 import android.content.res.TypedArray;
-import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.Outline;
@@ -42,7 +41,6 @@
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
-import java.util.Collection;
 
 /**
  * A Drawable that manages an array of other Drawables. These are drawn in array
@@ -2128,22 +2126,6 @@
             mHaveIsStateful = false;
         }
 
-        @Override
-        public int addAtlasableBitmaps(Collection<Bitmap> atlasList) {
-            final ChildDrawable[] array = mChildren;
-            final int N = mNum;
-            int pixelCount = 0;
-            for (int i = 0; i < N; i++) {
-                final Drawable dr = array[i].mDrawable;
-                if (dr != null) {
-                    final ConstantState state = dr.getConstantState();
-                    if (state != null) {
-                        pixelCount += state.addAtlasableBitmaps(atlasList);
-                    }
-                }
-            }
-            return pixelCount;
-        }
     }
 }
 
diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
index d962385..c7183d9 100644
--- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java
+++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java
@@ -49,7 +49,6 @@
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Collection;
 
 /**
  *
@@ -633,15 +632,6 @@
         }
 
         @Override
-        public int addAtlasableBitmaps(Collection<Bitmap> atlasList) {
-            final Bitmap bitmap = mNinePatch.getBitmap();
-            if (isAtlasable(bitmap) && atlasList.add(bitmap)) {
-                return bitmap.getWidth() * bitmap.getHeight();
-            }
-            return 0;
-        }
-
-        @Override
         public Drawable newDrawable() {
             return new NinePatchDrawable(this, null);
         }
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp
index 796cb36..371bc9a 100644
--- a/libs/androidfw/AssetManager.cpp
+++ b/libs/androidfw/AssetManager.cpp
@@ -35,6 +35,9 @@
 #include <utils/threads.h>
 #include <utils/Timers.h>
 #include <utils/Trace.h>
+#ifndef _WIN32
+#include <sys/file.h>
+#endif
 
 #include <assert.h>
 #include <dirent.h>
@@ -647,6 +650,12 @@
         return;
     }
 
+#ifndef _WIN32
+    if (TEMP_FAILURE_RETRY(flock(fileno(fin), LOCK_SH)) != 0) {
+        fclose(fin);
+        return;
+    }
+#endif
     char buf[1024];
     while (fgets(buf, sizeof(buf), fin)) {
         // format of each line:
@@ -677,6 +686,10 @@
             const_cast<AssetManager*>(this)->mZipSet.addOverlay(targetPackagePath, oap);
         }
     }
+
+#ifndef _WIN32
+    TEMP_FAILURE_RETRY(flock(fileno(fin), LOCK_UN));
+#endif
     fclose(fin);
 }
 
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index b44b1d8f..b117768 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -16,6 +16,7 @@
     hwui/MinikinSkia.cpp \
     hwui/MinikinUtils.cpp \
     hwui/PaintImpl.cpp \
+    hwui/PixelRef.cpp \
     hwui/Typeface.cpp \
     renderstate/Blend.cpp \
     renderstate/MeshState.cpp \
@@ -45,7 +46,6 @@
     AnimationContext.cpp \
     Animator.cpp \
     AnimatorManager.cpp \
-    AssetAtlas.cpp \
     BakedOpDispatcher.cpp \
     BakedOpRenderer.cpp \
     BakedOpState.cpp \
@@ -56,7 +56,6 @@
     DeferredLayerUpdater.cpp \
     DeviceInfo.cpp \
     DisplayList.cpp \
-    Dither.cpp \
     Extensions.cpp \
     FboCache.cpp \
     FontRenderer.cpp \
@@ -130,6 +129,14 @@
     hwui_cflags += -DUSE_HWC2
 endif
 
+# TODO: Linear blending should be enabled by default, but we are
+# TODO: making it an opt-in while it's a work in progress
+# TODO: The final test should be:
+# TODO: ifneq ($(TARGET_ENABLE_LINEAR_BLENDING),false)
+ifeq ($(TARGET_ENABLE_LINEAR_BLENDING),true)
+    hwui_cflags += -DANDROID_ENABLE_LINEAR_BLENDING
+endif
+
 # GCC false-positives on this warning, and since we -Werror that's
 # a problem
 hwui_cflags += -Wno-free-nonheap-object
@@ -143,7 +150,6 @@
     hwui_cflags += -DBUGREPORT_FONT_CACHE_USAGE
 endif
 
-
 ifndef HWUI_COMPILE_SYMBOLS
     hwui_cflags += -fvisibility=hidden
 endif
diff --git a/libs/hwui/AssetAtlas.cpp b/libs/hwui/AssetAtlas.cpp
deleted file mode 100644
index e2e70372..0000000
--- a/libs/hwui/AssetAtlas.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#include "AssetAtlas.h"
-#include "Caches.h"
-#include "Image.h"
-
-#include <GLES2/gl2ext.h>
-
-namespace android {
-namespace uirenderer {
-
-///////////////////////////////////////////////////////////////////////////////
-// Lifecycle
-///////////////////////////////////////////////////////////////////////////////
-
-void AssetAtlas::init(const sp<GraphicBuffer>& buffer, int64_t* map, int count) {
-    if (mImage) {
-        return;
-    }
-
-    ATRACE_NAME("AssetAtlas::init");
-
-    mImage = new Image(buffer);
-    if (mImage->getTexture()) {
-        if (!mTexture) {
-            Caches& caches = Caches::getInstance();
-            mTexture = new Texture(caches);
-            mTexture->wrap(mImage->getTexture(),
-                    buffer->getWidth(), buffer->getHeight(), GL_RGBA);
-            createEntries(caches, map, count);
-        }
-    } else {
-        ALOGW("Could not create atlas image");
-        terminate();
-    }
-}
-
-void AssetAtlas::terminate() {
-    delete mImage;
-    mImage = nullptr;
-    delete mTexture;
-    mTexture = nullptr;
-    mEntries.clear();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Entries
-///////////////////////////////////////////////////////////////////////////////
-
-AssetAtlas::Entry* AssetAtlas::getEntry(const SkPixelRef* pixelRef) const {
-    auto result = mEntries.find(pixelRef);
-    return result != mEntries.end() ? result->second.get() : nullptr;
-}
-
-Texture* AssetAtlas::getEntryTexture(const SkPixelRef* pixelRef) const {
-    auto result = mEntries.find(pixelRef);
-    return result != mEntries.end() ? result->second->texture : nullptr;
-}
-
-/**
- * Delegates changes to wrapping and filtering to the base atlas texture
- * instead of applying the changes to the virtual textures.
- */
-struct DelegateTexture: public Texture {
-    DelegateTexture(Caches& caches, Texture* delegate)
-            : Texture(caches), mDelegate(delegate) { }
-
-    virtual void setWrapST(GLenum wrapS, GLenum wrapT, bool bindTexture = false,
-            bool force = false, GLenum renderTarget = GL_TEXTURE_2D) override {
-        mDelegate->setWrapST(wrapS, wrapT, bindTexture, force, renderTarget);
-    }
-
-    virtual void setFilterMinMag(GLenum min, GLenum mag, bool bindTexture = false,
-            bool force = false, GLenum renderTarget = GL_TEXTURE_2D) override {
-        mDelegate->setFilterMinMag(min, mag, bindTexture, force, renderTarget);
-    }
-
-private:
-    Texture* const mDelegate;
-}; // struct DelegateTexture
-
-void AssetAtlas::createEntries(Caches& caches, int64_t* map, int count) {
-    const float width = float(mTexture->width());
-    const float height = float(mTexture->height());
-
-    for (int i = 0; i < count; ) {
-        SkPixelRef* pixelRef = reinterpret_cast<SkPixelRef*>(map[i++]);
-        // NOTE: We're converting from 64 bit signed values to 32 bit
-        // signed values. This is guaranteed to be safe because the "x"
-        // and "y" coordinate values are guaranteed to be representable
-        // with 32 bits. The array is 64 bits wide so that it can carry
-        // pointers on 64 bit architectures.
-        const int x = static_cast<int>(map[i++]);
-        const int y = static_cast<int>(map[i++]);
-
-        // Bitmaps should never be null, we're just extra paranoid
-        if (!pixelRef) continue;
-
-        const UvMapper mapper(
-                x / width, (x + pixelRef->info().width()) / width,
-                y / height, (y + pixelRef->info().height()) / height);
-
-        Texture* texture = new DelegateTexture(caches, mTexture);
-        texture->blend = !SkAlphaTypeIsOpaque(pixelRef->info().alphaType());
-        texture->wrap(mTexture->id(), pixelRef->info().width(),
-                pixelRef->info().height(), mTexture->format());
-
-        std::unique_ptr<Entry> entry(new Entry(pixelRef, texture, mapper, *this));
-        texture->uvMapper = &entry->uvMapper;
-
-        mEntries.emplace(entry->pixelRef, std::move(entry));
-    }
-}
-
-}; // namespace uirenderer
-}; // namespace android
diff --git a/libs/hwui/AssetAtlas.h b/libs/hwui/AssetAtlas.h
deleted file mode 100644
index b32e518..0000000
--- a/libs/hwui/AssetAtlas.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#ifndef ANDROID_HWUI_ASSET_ATLAS_H
-#define ANDROID_HWUI_ASSET_ATLAS_H
-
-#include "Texture.h"
-#include "UvMapper.h"
-
-#include <cutils/compiler.h>
-#include <GLES2/gl2.h>
-#include <ui/GraphicBuffer.h>
-#include <SkBitmap.h>
-
-#include <memory>
-#include <unordered_map>
-
-namespace android {
-namespace uirenderer {
-
-class Caches;
-class Image;
-
-/**
- * An asset atlas holds a collection of framework bitmaps in a single OpenGL
- * texture. Each bitmap is associated with a location, defined in pixels,
- * inside the atlas. The atlas is generated by the framework and bound as
- * an external texture using the EGLImageKHR extension.
- */
-class AssetAtlas {
-public:
-    /**
-     * Entry representing the texture and uvMapper of a PixelRef in the
-     * atlas
-     */
-    class Entry {
-    public:
-        /*
-         * A "virtual texture" object that represents the texture
-         * this entry belongs to. This texture should never be
-         * modified.
-         */
-        Texture* texture;
-
-        /**
-         * Maps texture coordinates in the [0..1] range into the
-         * correct range to sample this entry from the atlas.
-         */
-        const UvMapper uvMapper;
-
-        /**
-         * Unique identifier used to merge bitmaps and 9-patches stored
-         * in the atlas.
-         */
-        const void* getMergeId() const {
-            return texture->blend ? &atlas.mBlendKey : &atlas.mOpaqueKey;
-        }
-
-        ~Entry() {
-            delete texture;
-        }
-
-    private:
-        /**
-         * The pixel ref that generated this atlas entry.
-         */
-        SkPixelRef* pixelRef;
-
-        /**
-         * Atlas this entry belongs to.
-         */
-        const AssetAtlas& atlas;
-
-        Entry(SkPixelRef* pixelRef, Texture* texture, const UvMapper& mapper,
-                    const AssetAtlas& atlas)
-                : texture(texture)
-                , uvMapper(mapper)
-                , pixelRef(pixelRef)
-                , atlas(atlas) {
-        }
-
-        friend class AssetAtlas;
-    };
-
-    AssetAtlas(): mTexture(nullptr), mImage(nullptr),
-            mBlendKey(true), mOpaqueKey(false) { }
-    ~AssetAtlas() { terminate(); }
-
-    /**
-     * Initializes the atlas with the specified buffer and
-     * map. The buffer is a gralloc'd texture that will be
-     * used as an EGLImage. The map is a list of SkBitmap*
-     * and their (x, y) positions
-     *
-     * This method returns immediately if the atlas is already
-     * initialized. To re-initialize the atlas, you must
-     * first call terminate().
-     */
-    ANDROID_API void init(const sp<GraphicBuffer>& buffer, int64_t* map, int count);
-
-    /**
-     * Destroys the atlas texture. This object can be
-     * re-initialized after calling this method.
-     *
-     * After calling this method, the width, height
-     * and texture are set to 0.
-     */
-    void terminate();
-
-    /**
-     * Returns the width of this atlas in pixels.
-     * Can return 0 if the atlas is not initialized.
-     */
-    uint32_t getWidth() const {
-        return mTexture ? mTexture->width() : 0;
-    }
-
-    /**
-     * Returns the height of this atlas in pixels.
-     * Can return 0 if the atlas is not initialized.
-     */
-    uint32_t getHeight() const {
-        return mTexture ? mTexture->height() : 0;
-    }
-
-    /**
-     * Returns the OpenGL name of the texture backing this atlas.
-     * Can return 0 if the atlas is not initialized.
-     */
-    GLuint getTexture() const {
-        return mTexture ? mTexture->id() : 0;
-    }
-
-    /**
-     * Returns the entry in the atlas associated with the specified
-     * pixelRef. If the pixelRef is not in the atlas, return NULL.
-     */
-    Entry* getEntry(const SkPixelRef* pixelRef) const;
-
-    /**
-     * Returns the texture for the atlas entry associated with the
-     * specified pixelRef. If the pixelRef is not in the atlas, return NULL.
-     */
-    Texture* getEntryTexture(const SkPixelRef* pixelRef) const;
-
-private:
-    void createEntries(Caches& caches, int64_t* map, int count);
-
-    Texture* mTexture;
-    Image* mImage;
-
-    const bool mBlendKey;
-    const bool mOpaqueKey;
-
-    std::unordered_map<const SkPixelRef*, std::unique_ptr<Entry>> mEntries;
-}; // class AssetAtlas
-
-}; // namespace uirenderer
-}; // namespace android
-
-#endif // ANDROID_HWUI_ASSET_ATLAS_H
diff --git a/libs/hwui/BakedOpDispatcher.cpp b/libs/hwui/BakedOpDispatcher.cpp
index 8b3f172..6995039 100644
--- a/libs/hwui/BakedOpDispatcher.cpp
+++ b/libs/hwui/BakedOpDispatcher.cpp
@@ -35,11 +35,11 @@
 namespace android {
 namespace uirenderer {
 
-static void storeTexturedRect(TextureVertex* vertices, const Rect& bounds, const Rect& texCoord) {
-    vertices[0] = { bounds.left, bounds.top, texCoord.left, texCoord.top };
-    vertices[1] = { bounds.right, bounds.top, texCoord.right, texCoord.top };
-    vertices[2] = { bounds.left, bounds.bottom, texCoord.left, texCoord.bottom };
-    vertices[3] = { bounds.right, bounds.bottom, texCoord.right, texCoord.bottom };
+static void storeTexturedRect(TextureVertex* vertices, const Rect& bounds) {
+    vertices[0] = { bounds.left,  bounds.top,    0, 0 };
+    vertices[1] = { bounds.right, bounds.top,    1, 0 };
+    vertices[2] = { bounds.left,  bounds.bottom, 0, 1 };
+    vertices[3] = { bounds.right, bounds.bottom, 1, 1 };
 }
 
 void BakedOpDispatcher::onMergedBitmapOps(BakedOpRenderer& renderer,
@@ -48,16 +48,11 @@
     const BakedOpState& firstState = *(opList.states[0]);
     const SkBitmap* bitmap = (static_cast<const BitmapOp*>(opList.states[0]->op))->bitmap;
 
-    AssetAtlas::Entry* entry = renderer.renderState().assetAtlas().getEntry(bitmap->pixelRef());
-    Texture* texture = entry ? entry->texture : renderer.caches().textureCache.get(bitmap);
+    Texture* texture = renderer.caches().textureCache.get(bitmap);
     if (!texture) return;
     const AutoTexture autoCleanup(texture);
 
     TextureVertex vertices[opList.count * 4];
-    Rect texCoords(0, 0, 1, 1);
-    if (entry) {
-        entry->uvMapper.map(texCoords);
-    }
     for (size_t i = 0; i < opList.count; i++) {
         const BakedOpState& state = *(opList.states[i]);
         TextureVertex* rectVerts = &vertices[i * 4];
@@ -69,7 +64,7 @@
             // pure translate, so snap (same behavior as onBitmapOp)
             opBounds.snapToPixelBoundaries();
         }
-        storeTexturedRect(rectVerts, opBounds, texCoords);
+        storeTexturedRect(rectVerts, opBounds);
         renderer.dirtyRenderTarget(opBounds);
     }
 
@@ -92,8 +87,6 @@
         const MergedBakedOpList& opList) {
     const PatchOp& firstOp = *(static_cast<const PatchOp*>(opList.states[0]->op));
     const BakedOpState& firstState = *(opList.states[0]);
-    AssetAtlas::Entry* entry = renderer.renderState().assetAtlas().getEntry(
-            firstOp.bitmap->pixelRef());
 
     // Batches will usually contain a small number of items so it's
     // worth performing a first iteration to count the exact number
@@ -105,7 +98,7 @@
 
         // TODO: cache mesh lookups
         const Patch* opMesh = renderer.caches().patchCache.get(
-                entry, op.bitmap->width(), op.bitmap->height(),
+                op.bitmap->width(), op.bitmap->height(),
                 op.unmappedBounds.getWidth(), op.unmappedBounds.getHeight(), op.patch);
         totalVertices += opMesh->verticesCount;
     }
@@ -126,7 +119,7 @@
 
         // TODO: cache mesh lookups
         const Patch* opMesh = renderer.caches().patchCache.get(
-                entry, op.bitmap->width(), op.bitmap->height(),
+                op.bitmap->width(), op.bitmap->height(),
                 op.unmappedBounds.getWidth(), op.unmappedBounds.getHeight(), op.patch);
 
 
@@ -172,7 +165,7 @@
     }
 
 
-    Texture* texture = entry ? entry->texture : renderer.caches().textureCache.get(firstOp.bitmap);
+    Texture* texture = renderer.caches().textureCache.get(firstOp.bitmap);
     if (!texture) return;
     const AutoTexture autoCleanup(texture);
 
@@ -442,7 +435,12 @@
 }
 
 void BakedOpDispatcher::onBitmapMeshOp(BakedOpRenderer& renderer, const BitmapMeshOp& op, const BakedOpState& state) {
-    const static UvMapper defaultUvMapper;
+    Texture* texture = renderer.caches().textureCache.get(op.bitmap);
+    if (!texture) {
+        return;
+    }
+    const AutoTexture autoCleanup(texture);
+
     const uint32_t elementCount = op.meshWidth * op.meshHeight * 6;
 
     std::unique_ptr<ColorTextureVertex[]> mesh(new ColorTextureVertex[elementCount]);
@@ -457,9 +455,6 @@
         colors = tempColors.get();
     }
 
-    Texture* texture = renderer.renderState().assetAtlas().getEntryTexture(op.bitmap->pixelRef());
-    const UvMapper& mapper(texture && texture->uvMapper ? *texture->uvMapper : defaultUvMapper);
-
     for (int32_t y = 0; y < op.meshHeight; y++) {
         for (int32_t x = 0; x < op.meshWidth; x++) {
             uint32_t i = (y * (op.meshWidth + 1) + x) * 2;
@@ -469,8 +464,6 @@
             float v1 = float(y) / op.meshHeight;
             float v2 = float(y + 1) / op.meshHeight;
 
-            mapper.map(u1, v1, u2, v2);
-
             int ax = i + (op.meshWidth + 1) * 2;
             int ay = ax + 1;
             int bx = i;
@@ -491,14 +484,6 @@
         }
     }
 
-    if (!texture) {
-        texture = renderer.caches().textureCache.get(op.bitmap);
-        if (!texture) {
-            return;
-        }
-    }
-    const AutoTexture autoCleanup(texture);
-
     /*
      * TODO: handle alpha_8 textures correctly by applying paint color, but *not*
      * shader in that case to mimic the behavior in SkiaCanvas::drawBitmapMesh.
@@ -599,12 +584,11 @@
     }
 
     // TODO: avoid redoing the below work each frame:
-    AssetAtlas::Entry* entry = renderer.renderState().assetAtlas().getEntry(op.bitmap->pixelRef());
     const Patch* mesh = renderer.caches().patchCache.get(
-            entry, op.bitmap->width(), op.bitmap->height(),
+            op.bitmap->width(), op.bitmap->height(),
             op.unmappedBounds.getWidth(), op.unmappedBounds.getHeight(), op.patch);
 
-    Texture* texture = entry ? entry->texture : renderer.caches().textureCache.get(op.bitmap);
+    Texture* texture = renderer.caches().textureCache.get(op.bitmap);
     if (CC_LIKELY(texture)) {
         const AutoTexture autoCleanup(texture);
         Glop glop;
diff --git a/libs/hwui/BakedOpRenderer.cpp b/libs/hwui/BakedOpRenderer.cpp
index 6db345a..ac7a600 100644
--- a/libs/hwui/BakedOpRenderer.cpp
+++ b/libs/hwui/BakedOpRenderer.cpp
@@ -182,11 +182,7 @@
 }
 
 Texture* BakedOpRenderer::getTexture(const SkBitmap* bitmap) {
-    Texture* texture = mRenderState.assetAtlas().getEntryTexture(bitmap->pixelRef());
-    if (!texture) {
-        return mCaches.textureCache.get(bitmap);
-    }
-    return texture;
+    return mCaches.textureCache.get(bitmap);
 }
 
 void BakedOpRenderer::drawRects(const float* rects, int count, const SkPaint* paint) {
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index 741cdcc..b463e45 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -53,7 +53,6 @@
         : gradientCache(mExtensions)
         , patchCache(renderState)
         , programCache(mExtensions)
-        , dither(*this)
         , mRenderState(&renderState)
         , mInitialized(false) {
     INIT_LOGD("Creating OpenGL renderer caches");
@@ -238,7 +237,6 @@
             gradientCache.clear();
             fontRenderer.clear();
             fboCache.clear();
-            dither.clear();
             // fall through
         case FlushMode::Moderate:
             fontRenderer.flush();
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 344ee71..7c2e78c 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -16,8 +16,6 @@
 
 #pragma once
 
-#include "AssetAtlas.h"
-#include "Dither.h"
 #include "Extensions.h"
 #include "FboCache.h"
 #include "GammaFontRenderer.h"
@@ -130,6 +128,15 @@
     TextureVertex* getRegionMesh();
 
     /**
+     * Returns the GL RGBA internal format to use for the current device
+     * If the device supports linear blending and needSRGB is true,
+     * this function returns GL_SRGB8_ALPHA8, otherwise it returns GL_RGBA
+     */
+    constexpr GLint rgbaInternalFormat(bool needSRGB = true) const {
+        return extensions().hasSRGB() && needSRGB ? GL_SRGB8_ALPHA8 : GL_RGBA;
+    }
+
+    /**
      * Displays the memory usage of each cache and the total sum.
      */
     void dumpMemoryUsage();
@@ -157,8 +164,6 @@
 
     TaskManager tasks;
 
-    Dither dither;
-
     bool gpuPixelBuffersEnabled;
 
     // Debug methods
@@ -169,7 +174,7 @@
     void setProgram(const ProgramDescription& description);
     void setProgram(Program* program);
 
-    Extensions& extensions() { return mExtensions; }
+    const Extensions& extensions() const { return mExtensions; }
     Program& program() { return *mProgram; }
     PixelBufferState& pixelBufferState() { return *mPixelBufferState; }
     TextureState& textureState() { return *mTextureState; }
diff --git a/libs/hwui/Dither.cpp b/libs/hwui/Dither.cpp
deleted file mode 100644
index ec2013e..0000000
--- a/libs/hwui/Dither.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#include "Caches.h"
-#include "Dither.h"
-
-namespace android {
-namespace uirenderer {
-
-///////////////////////////////////////////////////////////////////////////////
-// Lifecycle
-///////////////////////////////////////////////////////////////////////////////
-
-Dither::Dither(Caches& caches)
-        : mCaches(caches)
-        , mInitialized(false)
-        , mDitherTexture(0) {
-}
-
-void Dither::bindDitherTexture() {
-    if (!mInitialized) {
-        glGenTextures(1, &mDitherTexture);
-        mCaches.textureState().bindTexture(mDitherTexture);
-
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
-        if (mCaches.extensions().hasFloatTextures()) {
-            // We use a R16F texture, let's remap the alpha channel to the
-            // red channel to avoid changing the shader sampling code on GL ES 3.0+
-            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_RED);
-
-            float dither = 1.0f / (255.0f * DITHER_KERNEL_SIZE * DITHER_KERNEL_SIZE);
-            const GLfloat pattern[] = {
-                 0 * dither,  8 * dither,  2 * dither, 10 * dither,
-                12 * dither,  4 * dither, 14 * dither,  6 * dither,
-                 3 * dither, 11 * dither,  1 * dither,  9 * dither,
-                15 * dither,  7 * dither, 13 * dither,  5 * dither
-            };
-
-            glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, DITHER_KERNEL_SIZE, DITHER_KERNEL_SIZE, 0,
-                    GL_RED, GL_FLOAT, &pattern);
-        } else {
-            const uint8_t pattern[] = {
-                 0,  8,  2, 10,
-                12,  4, 14,  6,
-                 3, 11,  1,  9,
-                15,  7, 13,  5
-            };
-
-            glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, DITHER_KERNEL_SIZE, DITHER_KERNEL_SIZE, 0,
-                    GL_ALPHA, GL_UNSIGNED_BYTE, &pattern);
-        }
-
-        mInitialized = true;
-    } else {
-        mCaches.textureState().bindTexture(mDitherTexture);
-    }
-}
-
-void Dither::clear() {
-    if (mInitialized) {
-        mCaches.textureState().deleteTexture(mDitherTexture);
-        mInitialized = false;
-    }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Program management
-///////////////////////////////////////////////////////////////////////////////
-
-void Dither::setupProgram(Program& program, GLuint* textureUnit) {
-    GLuint textureSlot = (*textureUnit)++;
-    mCaches.textureState().activateTexture(textureSlot);
-
-    bindDitherTexture();
-
-    glUniform1i(program.getUniform("ditherSampler"), textureSlot);
-}
-
-}; // namespace uirenderer
-}; // namespace android
diff --git a/libs/hwui/Dither.h b/libs/hwui/Dither.h
deleted file mode 100644
index 6af3e83..0000000
--- a/libs/hwui/Dither.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#ifndef ANDROID_HWUI_DITHER_H
-#define ANDROID_HWUI_DITHER_H
-
-#include <GLES3/gl3.h>
-
-namespace android {
-namespace uirenderer {
-
-class Caches;
-class Extensions;
-class Program;
-
-// Must be a power of two
-#define DITHER_KERNEL_SIZE 4
-// These must not use the .0f notation as they are used from GLSL
-#define DITHER_KERNEL_SIZE_INV (1.0 / 4.0)
-#define DITHER_KERNEL_SIZE_INV_SQUARE (1.0 / 16.0)
-
-/**
- * Handles dithering for programs.
- */
-class Dither {
-public:
-    explicit Dither(Caches& caches);
-
-    void clear();
-    void setupProgram(Program& program, GLuint* textureUnit);
-
-private:
-    void bindDitherTexture();
-
-    Caches& mCaches;
-    bool mInitialized;
-    GLuint mDitherTexture;
-};
-
-}; // namespace uirenderer
-}; // namespace android
-
-#endif // ANDROID_HWUI_DITHER_H
diff --git a/libs/hwui/Extensions.cpp b/libs/hwui/Extensions.cpp
index 02caaa4..1d67579 100644
--- a/libs/hwui/Extensions.cpp
+++ b/libs/hwui/Extensions.cpp
@@ -22,6 +22,7 @@
 
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
+
 #include <utils/Log.h>
 
 namespace android {
@@ -45,6 +46,19 @@
     mHas4BitStencil = extensions.has("GL_OES_stencil4");
     mHasUnpackSubImage = extensions.has("GL_EXT_unpack_subimage");
 
+#ifdef ANDROID_ENABLE_LINEAR_BLENDING
+    mHasSRGB = mVersionMajor >= 3 || extensions.has("GL_EXT_sRGB");
+    mHasSRGBWriteControl = extensions.has("GL_EXT_sRGB_write_control");
+
+    // If linear blending is enabled, the device must have (ES3.0 or EXT_sRGB)
+    // and EXT_sRGB_write_control
+    LOG_ALWAYS_FATAL_IF(!mHasSRGB, "Linear blending requires ES 3.0 or EXT_sRGB");
+    LOG_ALWAYS_FATAL_IF(!mHasSRGBWriteControl, "Linear blending requires EXT_sRGB_write_control");
+#else
+    mHasSRGB = false;
+    mHasSRGBWriteControl = false;
+#endif
+
     const char* version = (const char*) glGetString(GL_VERSION);
 
     // Section 6.1.5 of the OpenGL ES specification indicates the GL version
diff --git a/libs/hwui/Extensions.h b/libs/hwui/Extensions.h
index 67cc747..2c38507 100644
--- a/libs/hwui/Extensions.h
+++ b/libs/hwui/Extensions.h
@@ -43,6 +43,8 @@
     inline bool hasPixelBufferObjects() const { return mVersionMajor >= 3; }
     inline bool hasOcclusionQueries() const { return mVersionMajor >= 3; }
     inline bool hasFloatTextures() const { return mVersionMajor >= 3; }
+    inline bool hasSRGB() const { return mHasSRGB; }
+    inline bool hasSRGBWriteControl() const { return hasSRGB() && mHasSRGBWriteControl; }
 
     inline int getMajorGlVersion() const { return mVersionMajor; }
     inline int getMinorGlVersion() const { return mVersionMinor; }
@@ -55,6 +57,8 @@
     bool mHas1BitStencil;
     bool mHas4BitStencil;
     bool mHasUnpackSubImage;
+    bool mHasSRGB;
+    bool mHasSRGBWriteControl;
 
     int mVersionMajor;
     int mVersionMinor;
diff --git a/libs/hwui/FloatColor.h b/libs/hwui/FloatColor.h
index 9a39ec2..9df7338 100644
--- a/libs/hwui/FloatColor.h
+++ b/libs/hwui/FloatColor.h
@@ -16,6 +16,7 @@
 #ifndef FLOATCOLOR_H
 #define FLOATCOLOR_H
 
+#include "utils/Color.h"
 #include "utils/Macros.h"
 #include "utils/MathUtils.h"
 
@@ -25,11 +26,25 @@
 namespace uirenderer {
 
 struct FloatColor {
+    // "color" is a gamma-encoded sRGB color
+    // After calling this method, the color is stored as a pre-multiplied linear color
+    // if linear blending is enabled. Otherwise, the color is stored as a pre-multiplied
+    // gamma-encoded sRGB color
     void set(uint32_t color) {
         a = ((color >> 24) & 0xff) / 255.0f;
-        r = a * ((color >> 16) & 0xff) / 255.0f;
-        g = a * ((color >>  8) & 0xff) / 255.0f;
-        b = a * ((color      ) & 0xff) / 255.0f;
+        r = a * EOCF(((color >> 16) & 0xff) / 255.0f);
+        g = a * EOCF(((color >>  8) & 0xff) / 255.0f);
+        b = a * EOCF(((color      ) & 0xff) / 255.0f);
+    }
+
+    // "color" is a gamma-encoded sRGB color
+    // After calling this method, the color is stored as a pre-multiplied linear color
+    // if linear blending is enabled.
+    void setSRGB(uint32_t color) {
+        a = ((color >> 24) & 0xff) / 255.0f;
+        r = a * EOCF_sRGB(((color >> 16) & 0xff) / 255.0f);
+        g = a * EOCF_sRGB(((color >>  8) & 0xff) / 255.0f);
+        b = a * EOCF_sRGB(((color      ) & 0xff) / 255.0f);
     }
 
     bool isNotBlack() {
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index 9b60dfc..effc65e 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -60,11 +60,17 @@
     }
     int transformFlags = pureTranslate
             ? TransformFlags::MeshIgnoresCanvasTransform : TransformFlags::None;
+#ifdef ANDROID_ENABLE_LINEAR_BLENDING
+    bool gammaCorrection = true;
+#else
+    bool gammaCorrection = false;
+#endif
     Glop glop;
     GlopBuilder(renderer->renderState(), renderer->caches(), &glop)
             .setRoundRectClipState(bakedState->roundRectClipState)
             .setMeshTexturedIndexedQuads(texture.mesh(), texture.meshElementCount())
             .setFillTexturePaint(texture.getTexture(), textureFillFlags, paint, bakedState->alpha)
+            .setGammaCorrection(gammaCorrection)
             .setTransform(bakedState->computedState.transform, transformFlags)
             .setModelViewIdentityEmptyBounds()
             .build();
@@ -287,24 +293,23 @@
     // Copy the glyph image, taking the mask format into account
     switch (format) {
         case SkMask::kA8_Format: {
-            uint32_t cacheX = 0, bX = 0, cacheY = 0, bY = 0;
             uint32_t row = (startY - TEXTURE_BORDER_SIZE) * cacheWidth + startX
                     - TEXTURE_BORDER_SIZE;
             // write leading border line
             memset(&cacheBuffer[row], 0, glyph.fWidth + 2 * TEXTURE_BORDER_SIZE);
             // write glyph data
             if (mGammaTable) {
-                for (cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY += srcStride) {
+                for (uint32_t cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY += srcStride) {
                     row = cacheY * cacheWidth;
                     cacheBuffer[row + startX - TEXTURE_BORDER_SIZE] = 0;
-                    for (cacheX = startX, bX = 0; cacheX < endX; cacheX++, bX++) {
+                    for (uint32_t cacheX = startX, bX = 0; cacheX < endX; cacheX++, bX++) {
                         uint8_t tempCol = bitmapBuffer[bY + bX];
                         cacheBuffer[row + cacheX] = mGammaTable[tempCol];
                     }
                     cacheBuffer[row + endX + TEXTURE_BORDER_SIZE - 1] = 0;
                 }
             } else {
-                for (cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY += srcStride) {
+                for (uint32_t cacheY = startY, bY = 0; cacheY < endY; cacheY++, bY += srcStride) {
                     row = cacheY * cacheWidth;
                     memcpy(&cacheBuffer[row + startX], &bitmapBuffer[bY], glyph.fWidth);
                     cacheBuffer[row + startX - TEXTURE_BORDER_SIZE] = 0;
diff --git a/libs/hwui/FrameBuilder.cpp b/libs/hwui/FrameBuilder.cpp
index be4fdac..17ad0e3 100644
--- a/libs/hwui/FrameBuilder.cpp
+++ b/libs/hwui/FrameBuilder.cpp
@@ -612,7 +612,6 @@
             && op.bitmap->colorType() != kAlpha_8_SkColorType
             && hasMergeableClip(*bakedState)) {
         mergeid_t mergeId = reinterpret_cast<mergeid_t>(op.bitmap->getGenerationID());
-        // TODO: AssetAtlas in mergeId
         currentLayer().deferMergeableOp(mAllocator, bakedState, OpBatchType::Bitmap, mergeId);
     } else {
         currentLayer().deferUnmergeableOp(mAllocator, bakedState, OpBatchType::Bitmap);
@@ -687,7 +686,6 @@
             && PaintUtils::getXfermodeDirect(op.paint) == SkXfermode::kSrcOver_Mode
             && hasMergeableClip(*bakedState)) {
         mergeid_t mergeId = reinterpret_cast<mergeid_t>(op.bitmap->getGenerationID());
-        // TODO: AssetAtlas in mergeId
 
         // Only use the MergedPatch batchId when merged, so Bitmap+Patch don't try to merge together
         currentLayer().deferMergeableOp(mAllocator, bakedState, OpBatchType::MergedPatch, mergeId);
diff --git a/libs/hwui/GammaFontRenderer.cpp b/libs/hwui/GammaFontRenderer.cpp
index 96cac86..8aff0a2 100644
--- a/libs/hwui/GammaFontRenderer.cpp
+++ b/libs/hwui/GammaFontRenderer.cpp
@@ -24,12 +24,13 @@
 GammaFontRenderer::GammaFontRenderer() {
     INIT_LOGD("Creating lookup gamma font renderer");
 
+#ifndef ANDROID_ENABLE_LINEAR_BLENDING
     // Compute the gamma tables
     const float gamma = 1.0f / Properties::textGamma;
-
     for (uint32_t i = 0; i <= 255; i++) {
         mGammaTable[i] = uint8_t((float)::floor(pow(i / 255.0f, gamma) * 255.0f + 0.5f));
     }
+#endif
 }
 
 void GammaFontRenderer::endPrecaching() {
diff --git a/libs/hwui/GammaFontRenderer.h b/libs/hwui/GammaFontRenderer.h
index bd27a1a..c9cf69b 100644
--- a/libs/hwui/GammaFontRenderer.h
+++ b/libs/hwui/GammaFontRenderer.h
@@ -18,11 +18,6 @@
 #define ANDROID_HWUI_GAMMA_FONT_RENDERER_H
 
 #include "FontRenderer.h"
-#include "Program.h"
-
-#include <SkPaint.h>
-
-#include <utils/String8.h>
 
 namespace android {
 namespace uirenderer {
@@ -43,7 +38,11 @@
 
     FontRenderer& getFontRenderer() {
         if (!mRenderer) {
-            mRenderer.reset(new FontRenderer(&mGammaTable[0]));
+            const uint8_t* table = nullptr;
+#ifndef ANDROID_ENABLE_LINEAR_BLENDING
+            table = &mGammaTable[0];
+#endif
+            mRenderer.reset(new FontRenderer(table));
         }
         return *mRenderer;
     }
@@ -64,7 +63,9 @@
 
 private:
     std::unique_ptr<FontRenderer> mRenderer;
+#ifndef ANDROID_ENABLE_LINEAR_BLENDING
     uint8_t mGammaTable[256];
+#endif
 };
 
 }; // namespace uirenderer
diff --git a/libs/hwui/GlopBuilder.cpp b/libs/hwui/GlopBuilder.cpp
index 1091736..65922f6 100644
--- a/libs/hwui/GlopBuilder.cpp
+++ b/libs/hwui/GlopBuilder.cpp
@@ -223,16 +223,16 @@
         SkXfermode::Mode mode, Blend::ModeOrderSwap modeUsage,
         const SkShader* shader, const SkColorFilter* colorFilter) {
     if (mode != SkXfermode::kClear_Mode) {
-        float alpha = (SkColorGetA(color) / 255.0f) * alphaScale;
         if (!shader) {
-            float colorScale = alpha / 255.0f;
-            mOutGlop->fill.color = {
-                    colorScale * SkColorGetR(color),
-                    colorScale * SkColorGetG(color),
-                    colorScale * SkColorGetB(color),
-                    alpha
-            };
+            FloatColor c;
+            c.set(color);
+            c.r *= alphaScale;
+            c.g *= alphaScale;
+            c.b *= alphaScale;
+            c.a *= alphaScale;
+            mOutGlop->fill.color = c;
         } else {
+            float alpha = (SkColorGetA(color) / 255.0f) * alphaScale;
             mOutGlop->fill.color = { 1, 1, 1, alpha };
         }
     } else {
@@ -276,15 +276,7 @@
         if (colorFilter->asColorMode(&color, &mode)) {
             mOutGlop->fill.filterMode = mDescription.colorOp = ProgramDescription::ColorFilterMode::Blend;
             mDescription.colorMode = mode;
-
-            const float alpha = SkColorGetA(color) / 255.0f;
-            float colorScale = alpha / 255.0f;
-            mOutGlop->fill.filter.color = {
-                    colorScale * SkColorGetR(color),
-                    colorScale * SkColorGetG(color),
-                    colorScale * SkColorGetB(color),
-                    alpha,
-            };
+            mOutGlop->fill.filter.color.set(color);
         } else if (colorFilter->asColorMatrix(srcColorMatrix)) {
             mOutGlop->fill.filterMode = mDescription.colorOp = ProgramDescription::ColorFilterMode::Matrix;
 
@@ -297,10 +289,10 @@
             // Skia uses the range [0..255] for the addition vector, but we need
             // the [0..1] range to apply the vector in GLSL
             float* colorVector = mOutGlop->fill.filter.matrix.vector;
-            colorVector[0] = srcColorMatrix[4] / 255.0f;
-            colorVector[1] = srcColorMatrix[9] / 255.0f;
-            colorVector[2] = srcColorMatrix[14] / 255.0f;
-            colorVector[3] = srcColorMatrix[19] / 255.0f;
+            colorVector[0] = EOCF(srcColorMatrix[4]  / 255.0f);
+            colorVector[1] = EOCF(srcColorMatrix[9]  / 255.0f);
+            colorVector[2] = EOCF(srcColorMatrix[14] / 255.0f);
+            colorVector[3] =      srcColorMatrix[19] / 255.0f;  // alpha is linear
         } else {
             LOG_ALWAYS_FATAL("unsupported ColorFilter");
         }
@@ -481,6 +473,13 @@
     return *this;
 }
 
+GlopBuilder& GlopBuilder::setGammaCorrection(bool enabled) {
+    REQUIRE_STAGES(kFillStage);
+
+    mDescription.hasGammaCorrection = enabled;
+    return *this;
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // Transform
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/GlopBuilder.h b/libs/hwui/GlopBuilder.h
index 1152461..1f3b53a 100644
--- a/libs/hwui/GlopBuilder.h
+++ b/libs/hwui/GlopBuilder.h
@@ -105,6 +105,8 @@
 
     GlopBuilder& setRoundRectClipState(const RoundRectClipState* roundRectClipState);
 
+    GlopBuilder& setGammaCorrection(bool enabled);
+
     void build();
 
     static void dump(const Glop& glop);
diff --git a/libs/hwui/GradientCache.cpp b/libs/hwui/GradientCache.cpp
index c8f5e94..0972ac1 100644
--- a/libs/hwui/GradientCache.cpp
+++ b/libs/hwui/GradientCache.cpp
@@ -67,7 +67,8 @@
         , mSize(0)
         , mMaxSize(Properties::gradientCacheSize)
         , mUseFloatTexture(extensions.hasFloatTextures())
-        , mHasNpot(extensions.hasNPot()){
+        , mHasNpot(extensions.hasNPot())
+        , mHasSRGB(extensions.hasSRGB()) {
     glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize);
 
     mCache.setOnEntryRemovedListener(this);
@@ -176,71 +177,56 @@
 
 size_t GradientCache::bytesPerPixel() const {
     // We use 4 channels (RGBA)
+    return 4 * (mUseFloatTexture ? /* fp16 */ 2 : sizeof(uint8_t));
+}
+
+size_t GradientCache::sourceBytesPerPixel() const {
+    // We use 4 channels (RGBA) and upload from floats (not half floats)
     return 4 * (mUseFloatTexture ? sizeof(float) : sizeof(uint8_t));
 }
 
-void GradientCache::splitToBytes(uint32_t inColor, GradientColor& outColor) const {
-    outColor.r = (inColor >> 16) & 0xff;
-    outColor.g = (inColor >>  8) & 0xff;
-    outColor.b = (inColor >>  0) & 0xff;
-    outColor.a = (inColor >> 24) & 0xff;
-}
-
-void GradientCache::splitToFloats(uint32_t inColor, GradientColor& outColor) const {
-    outColor.r = ((inColor >> 16) & 0xff) / 255.0f;
-    outColor.g = ((inColor >>  8) & 0xff) / 255.0f;
-    outColor.b = ((inColor >>  0) & 0xff) / 255.0f;
-    outColor.a = ((inColor >> 24) & 0xff) / 255.0f;
-}
-
-void GradientCache::mixBytes(GradientColor& start, GradientColor& end, float amount,
-        uint8_t*& dst) const {
+void GradientCache::mixBytes(const FloatColor& start, const FloatColor& end,
+        float amount, uint8_t*& dst) const {
     float oppAmount = 1.0f - amount;
-    const float alpha = start.a * oppAmount + end.a * amount;
-    const float a = alpha / 255.0f;
-
-    *dst++ = uint8_t(a * (start.r * oppAmount + end.r * amount));
-    *dst++ = uint8_t(a * (start.g * oppAmount + end.g * amount));
-    *dst++ = uint8_t(a * (start.b * oppAmount + end.b * amount));
-    *dst++ = uint8_t(alpha);
+    *dst++ = uint8_t(OECF_sRGB(start.r * oppAmount + end.r * amount) * 255.0f);
+    *dst++ = uint8_t(OECF_sRGB(start.g * oppAmount + end.g * amount) * 255.0f);
+    *dst++ = uint8_t(OECF_sRGB(start.b * oppAmount + end.b * amount) * 255.0f);
+    *dst++ = uint8_t(         (start.a * oppAmount + end.a * amount) * 255.0f);
 }
 
-void GradientCache::mixFloats(GradientColor& start, GradientColor& end, float amount,
-        uint8_t*& dst) const {
+void GradientCache::mixFloats(const FloatColor& start, const FloatColor& end,
+        float amount, uint8_t*& dst) const {
     float oppAmount = 1.0f - amount;
-    const float a = start.a * oppAmount + end.a * amount;
-
     float* d = (float*) dst;
-    *d++ = a * (start.r * oppAmount + end.r * amount);
-    *d++ = a * (start.g * oppAmount + end.g * amount);
-    *d++ = a * (start.b * oppAmount + end.b * amount);
-    *d++ = a;
-
+#ifdef ANDROID_ENABLE_LINEAR_BLENDING
+    *d++ = start.r * oppAmount + end.r * amount;
+    *d++ = start.g * oppAmount + end.g * amount;
+    *d++ = start.b * oppAmount + end.b * amount;
+#else
+    *d++ = OECF_sRGB(start.r * oppAmount + end.r * amount);
+    *d++ = OECF_sRGB(start.g * oppAmount + end.g * amount);
+    *d++ = OECF_sRGB(start.b * oppAmount + end.b * amount);
+#endif
+    *d++ = start.a * oppAmount + end.a * amount;
     dst += 4 * sizeof(float);
 }
 
 void GradientCache::generateTexture(uint32_t* colors, float* positions,
         const uint32_t width, const uint32_t height, Texture* texture) {
-    const GLsizei rowBytes = width * bytesPerPixel();
+    const GLsizei rowBytes = width * sourceBytesPerPixel();
     uint8_t pixels[rowBytes * height];
 
-    static ChannelSplitter gSplitters[] = {
-            &android::uirenderer::GradientCache::splitToBytes,
-            &android::uirenderer::GradientCache::splitToFloats,
-    };
-    ChannelSplitter split = gSplitters[mUseFloatTexture];
-
     static ChannelMixer gMixers[] = {
-            &android::uirenderer::GradientCache::mixBytes,
-            &android::uirenderer::GradientCache::mixFloats,
+            &android::uirenderer::GradientCache::mixBytes,  // colors are stored gamma-encoded
+            &android::uirenderer::GradientCache::mixFloats, // colors are stored in linear
     };
     ChannelMixer mix = gMixers[mUseFloatTexture];
 
-    GradientColor start;
-    (this->*split)(colors[0], start);
+    FloatColor start;
+    start.setSRGB(colors[0]);
 
-    GradientColor end;
-    (this->*split)(colors[1], end);
+    FloatColor end;
+    end.setSRGB(colors[1]);
 
     int currentPos = 1;
     float startPos = positions[0];
@@ -255,7 +241,7 @@
 
             currentPos++;
 
-            (this->*split)(colors[currentPos], end);
+            end.setSRGB(colors[currentPos]);
             distance = positions[currentPos] - startPos;
         }
 
@@ -266,10 +252,10 @@
     memcpy(pixels + rowBytes, pixels, rowBytes);
 
     if (mUseFloatTexture) {
-        // We have to use GL_RGBA16F because GL_RGBA32F does not support filtering
         texture->upload(GL_RGBA16F, width, height, GL_RGBA, GL_FLOAT, pixels);
     } else {
-        texture->upload(GL_RGBA, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
+        GLint internalFormat = mHasSRGB ? GL_SRGB8_ALPHA8 : GL_RGBA;
+        texture->upload(internalFormat, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
     }
 
     texture->setFilter(GL_LINEAR);
diff --git a/libs/hwui/GradientCache.h b/libs/hwui/GradientCache.h
index 49be19a..5e35435 100644
--- a/libs/hwui/GradientCache.h
+++ b/libs/hwui/GradientCache.h
@@ -26,6 +26,8 @@
 #include <utils/LruCache.h>
 #include <utils/Mutex.h>
 
+#include "FloatColor.h"
+
 namespace android {
 namespace uirenderer {
 
@@ -150,25 +152,15 @@
     void getGradientInfo(const uint32_t* colors, const int count, GradientInfo& info);
 
     size_t bytesPerPixel() const;
+    size_t sourceBytesPerPixel() const;
 
-    struct GradientColor {
-        float r;
-        float g;
-        float b;
-        float a;
-    };
-
-    typedef void (GradientCache::*ChannelSplitter)(uint32_t inColor,
-            GradientColor& outColor) const;
-
-    void splitToBytes(uint32_t inColor, GradientColor& outColor) const;
-    void splitToFloats(uint32_t inColor, GradientColor& outColor) const;
-
-    typedef void (GradientCache::*ChannelMixer)(GradientColor& start, GradientColor& end,
+    typedef void (GradientCache::*ChannelMixer)(const FloatColor& start, const FloatColor& end,
             float amount, uint8_t*& dst) const;
 
-    void mixBytes(GradientColor& start, GradientColor& end, float amount, uint8_t*& dst) const;
-    void mixFloats(GradientColor& start, GradientColor& end, float amount, uint8_t*& dst) const;
+    void mixBytes(const FloatColor& start, const FloatColor& end,
+            float amount, uint8_t*& dst) const;
+    void mixFloats(const FloatColor& start, const FloatColor& end,
+            float amount, uint8_t*& dst) const;
 
     LruCache<GradientCacheEntry, Texture*> mCache;
 
@@ -178,6 +170,7 @@
     GLint mMaxTextureSize;
     bool mUseFloatTexture;
     bool mHasNpot;
+    bool mHasSRGB;
 
     mutable Mutex mLock;
 }; // class GradientCache
diff --git a/libs/hwui/Layer.h b/libs/hwui/Layer.h
index c688a96..01650ef 100644
--- a/libs/hwui/Layer.h
+++ b/libs/hwui/Layer.h
@@ -75,7 +75,7 @@
     }
 
     void setSize(uint32_t width, uint32_t height) {
-        texture.updateSize(width, height, texture.format());
+        texture.updateSize(width, height, texture.internalFormat(), texture.format());
     }
 
     inline void setBlend(bool blend) {
diff --git a/libs/hwui/PatchCache.cpp b/libs/hwui/PatchCache.cpp
index a6c281d..52c62cc 100644
--- a/libs/hwui/PatchCache.cpp
+++ b/libs/hwui/PatchCache.cpp
@@ -225,17 +225,15 @@
 
 static const UvMapper sIdentity;
 
-const Patch* PatchCache::get(const AssetAtlas::Entry* entry,
-        const uint32_t bitmapWidth, const uint32_t bitmapHeight,
+const Patch* PatchCache::get( const uint32_t bitmapWidth, const uint32_t bitmapHeight,
         const float pixelWidth, const float pixelHeight, const Res_png_9patch* patch) {
 
     const PatchDescription description(bitmapWidth, bitmapHeight, pixelWidth, pixelHeight, patch);
     const Patch* mesh = mCache.get(description);
 
     if (!mesh) {
-        const UvMapper& mapper = entry ? entry->uvMapper : sIdentity;
         Patch* newMesh = new Patch(bitmapWidth, bitmapHeight,
-                pixelWidth, pixelHeight, mapper, patch);
+                pixelWidth, pixelHeight, sIdentity, patch);
 
         if (newMesh->vertices) {
             setupMesh(newMesh);
diff --git a/libs/hwui/PatchCache.h b/libs/hwui/PatchCache.h
index 6e6a730..0624c35 100644
--- a/libs/hwui/PatchCache.h
+++ b/libs/hwui/PatchCache.h
@@ -22,7 +22,6 @@
 
 #include <androidfw/ResourceTypes.h>
 
-#include "AssetAtlas.h"
 #include "Debug.h"
 #include "utils/Pair.h"
 
@@ -54,8 +53,7 @@
     explicit PatchCache(RenderState& renderState);
     ~PatchCache();
 
-    const Patch* get(const AssetAtlas::Entry* entry,
-            const uint32_t bitmapWidth, const uint32_t bitmapHeight,
+    const Patch* get(const uint32_t bitmapWidth, const uint32_t bitmapHeight,
             const float pixelWidth, const float pixelHeight, const Res_png_9patch* patch);
     void clear();
 
diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp
index eb606cb..e69ea79 100644
--- a/libs/hwui/PathCache.cpp
+++ b/libs/hwui/PathCache.cpp
@@ -182,8 +182,7 @@
 PathCache::PathCache()
         : mCache(LruCache<PathDescription, PathTexture*>::kUnlimitedCapacity)
         , mSize(0)
-        , mMaxSize(Properties::pathCacheSize)
-        , mTexNum(0) {
+        , mMaxSize(Properties::pathCacheSize) {
     mCache.setOnEntryRemovedListener(this);
 
     GLint maxTextureSize;
@@ -239,7 +238,6 @@
                         "the cache in an inconsistent state", size);
             }
             mSize -= size;
-            mTexNum--;
         }
 
         PATH_LOGD("PathCache::delete name, size, mSize = %d, %d, %d",
@@ -264,7 +262,14 @@
 }
 
 void PathCache::trim() {
-    while (mSize > mMaxSize || mTexNum > DEFAULT_PATH_TEXTURE_CAP) {
+    // 25 is just an arbitrary lower bound to ensure we aren't in weird edge cases
+    // of things like a cap of 0 or 1 as that's going to break things.
+    // It does not represent a reasonable minimum value
+    static_assert(DEFAULT_PATH_TEXTURE_CAP > 25, "Path cache texture cap is too small");
+
+    while (mSize > mMaxSize || mCache.size() > DEFAULT_PATH_TEXTURE_CAP) {
+        LOG_ALWAYS_FATAL_IF(!mCache.size(), "Inconsistent mSize! Ran out of items to remove!"
+                " mSize = %u, mMaxSize = %u", mSize, mMaxSize);
         mCache.removeOldest();
     }
 }
@@ -312,7 +317,6 @@
     ATRACE_NAME("Upload Path Texture");
     texture->upload(bitmap);
     texture->setFilter(GL_LINEAR);
-    mTexNum++;
 }
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/PathCache.h b/libs/hwui/PathCache.h
index b45a2c5..18bcc56 100644
--- a/libs/hwui/PathCache.h
+++ b/libs/hwui/PathCache.h
@@ -281,12 +281,6 @@
 
     bool mDebugEnabled;
 
-    /**
-     * Driver allocated 4k/8k/16k memory for small path cache,
-     * limit the number of PathTexture in case occupy too much memory in hardware.
-     */
-    uint32_t mTexNum;
-
     sp<PathProcessor> mProcessor;
 
     std::vector<uint32_t> mGarbage;
diff --git a/libs/hwui/Program.h b/libs/hwui/Program.h
index e5200a5..f5beb62 100644
--- a/libs/hwui/Program.h
+++ b/libs/hwui/Program.h
@@ -85,6 +85,8 @@
 #define PROGRAM_HAS_DEBUG_HIGHLIGHT 42
 #define PROGRAM_HAS_ROUND_RECT_CLIP 43
 
+#define PROGRAM_HAS_GAMMA_CORRECTION 44
+
 ///////////////////////////////////////////////////////////////////////////////
 // Types
 ///////////////////////////////////////////////////////////////////////////////
@@ -158,6 +160,8 @@
     bool hasDebugHighlight;
     bool hasRoundRectClip;
 
+    bool hasGammaCorrection;
+
     /**
      * Resets this description. All fields are reset back to the default
      * values they hold after building a new instance.
@@ -196,6 +200,8 @@
 
         hasDebugHighlight = false;
         hasRoundRectClip = false;
+
+        hasGammaCorrection = false;
     }
 
     /**
@@ -262,6 +268,7 @@
         if (hasColors) key |= programid(0x1) << PROGRAM_HAS_COLORS;
         if (hasDebugHighlight) key |= programid(0x1) << PROGRAM_HAS_DEBUG_HIGHLIGHT;
         if (hasRoundRectClip) key |= programid(0x1) << PROGRAM_HAS_ROUND_RECT_CLIP;
+        if (hasGammaCorrection) key |= programid(0x1) << PROGRAM_HAS_GAMMA_CORRECTION;
         return key;
     }
 
diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp
index 59225e1..4ef6b85 100644
--- a/libs/hwui/ProgramCache.cpp
+++ b/libs/hwui/ProgramCache.cpp
@@ -17,8 +17,8 @@
 #include <utils/String8.h>
 
 #include "Caches.h"
-#include "Dither.h"
 #include "ProgramCache.h"
+#include "Properties.h"
 
 namespace android {
 namespace uirenderer {
@@ -69,22 +69,16 @@
         "varying highp vec2 outBitmapTexCoords;\n";
 const char* gVS_Header_Varyings_HasGradient[6] = {
         // Linear
-        "varying highp vec2 linear;\n"
-        "varying vec2 ditherTexCoords;\n",
-        "varying float linear;\n"
-        "varying vec2 ditherTexCoords;\n",
+        "varying highp vec2 linear;\n",
+        "varying float linear;\n",
 
         // Circular
-        "varying highp vec2 circular;\n"
-        "varying vec2 ditherTexCoords;\n",
-        "varying highp vec2 circular;\n"
-        "varying vec2 ditherTexCoords;\n",
+        "varying highp vec2 circular;\n",
+        "varying highp vec2 circular;\n",
 
         // Sweep
-        "varying highp vec2 sweep;\n"
-        "varying vec2 ditherTexCoords;\n",
-        "varying highp vec2 sweep;\n"
-        "varying vec2 ditherTexCoords;\n",
+        "varying highp vec2 sweep;\n",
+        "varying highp vec2 sweep;\n",
 };
 const char* gVS_Header_Varyings_HasRoundRectClip =
         "varying highp vec2 roundRectPos;\n";
@@ -98,22 +92,16 @@
         "    outTexCoords = (mainTextureTransform * vec4(texCoords, 0.0, 1.0)).xy;\n";
 const char* gVS_Main_OutGradient[6] = {
         // Linear
-        "    linear = vec2((screenSpace * position).x, 0.5);\n"
-        "    ditherTexCoords = (transform * position).xy * " STR(DITHER_KERNEL_SIZE_INV) ";\n",
-        "    linear = (screenSpace * position).x;\n"
-        "    ditherTexCoords = (transform * position).xy * " STR(DITHER_KERNEL_SIZE_INV) ";\n",
+        "    linear = vec2((screenSpace * position).x, 0.5);\n",
+        "    linear = (screenSpace * position).x;\n",
 
         // Circular
-        "    circular = (screenSpace * position).xy;\n"
-        "    ditherTexCoords = (transform * position).xy * " STR(DITHER_KERNEL_SIZE_INV) ";\n",
-        "    circular = (screenSpace * position).xy;\n"
-        "    ditherTexCoords = (transform * position).xy * " STR(DITHER_KERNEL_SIZE_INV) ";\n",
+        "    circular = (screenSpace * position).xy;\n",
+        "    circular = (screenSpace * position).xy;\n",
 
         // Sweep
+        "    sweep = (screenSpace * position).xy;\n",
         "    sweep = (screenSpace * position).xy;\n"
-        "    ditherTexCoords = (transform * position).xy * " STR(DITHER_KERNEL_SIZE_INV) ";\n",
-        "    sweep = (screenSpace * position).xy;\n"
-        "    ditherTexCoords = (transform * position).xy * " STR(DITHER_KERNEL_SIZE_INV) ";\n",
 };
 const char* gVS_Main_OutBitmapTexCoords =
         "    outBitmapTexCoords = (textureTransform * position).xy * textureDimension;\n";
@@ -147,12 +135,11 @@
         "uniform sampler2D baseSampler;\n";
 const char* gFS_Uniforms_ExternalTextureSampler =
         "uniform samplerExternalOES baseSampler;\n";
-const char* gFS_Uniforms_Dither =
-        "uniform sampler2D ditherSampler;";
 const char* gFS_Uniforms_GradientSampler[2] = {
-        "%s\n"
+        "uniform vec2 screenSize;\n"
         "uniform sampler2D gradientSampler;\n",
-        "%s\n"
+
+        "uniform vec2 screenSize;\n"
         "uniform vec4 startColor;\n"
         "uniform vec4 endColor;\n"
 };
@@ -172,18 +159,57 @@
         "uniform vec4 roundRectInnerRectLTRB;\n"
         "uniform float roundRectRadius;\n";
 
+// Dithering must be done in the quantization space
+// When we are writing to an sRGB framebuffer, we must do the following:
+//     EOCF(OECF(color) + dither)
+// We approximate the transfer functions with gamma 2.0 to avoid branches and pow()
+// The dithering pattern is generated with a triangle noise generator in the range [-0.0,1.0]
+// TODO: Handle linear fp16 render targets
+const char* gFS_Gradient_Functions =
+        "\nfloat triangleNoise(const highp vec2 n) {\n"
+        "    highp vec2 p = fract(n * vec2(5.3987, 5.4421));\n"
+        "    p += dot(p.yx, p.xy + vec2(21.5351, 14.3137));\n"
+        "    highp float xy = p.x * p.y;\n"
+        "    return fract(xy * 95.4307) + fract(xy * 75.04961) - 1.0;\n"
+        "}\n";
+const char* gFS_Gradient_Preamble[2] = {
+        // Linear framebuffer
+        "\nvec4 dither(const vec4 color) {\n"
+        "    return vec4(color.rgb + (triangleNoise(gl_FragCoord.xy * screenSize.xy) / 255.0), color.a);"
+        "}\n"
+        "\nvec4 gammaMix(const vec4 a, const vec4 b, float v) {\n"
+        "    return pow(mix(a, b, v), vec4(vec3(1.0 / 2.2), 1.0));"
+        "}\n",
+        // sRGB framebuffer
+        "\nvec4 dither(const vec4 color) {\n"
+        "    vec3 dithered = sqrt(color.rgb) + (triangleNoise(gl_FragCoord.xy * screenSize.xy) / 255.0);\n"
+        "    return vec4(dithered * dithered, color.a);\n"
+        "}\n"
+        "\nvec4 gammaMix(const vec4 a, const vec4 b, float v) {\n"
+        "    return mix(a, b, v);"
+        "}\n"
+};
+
+// Uses luminance coefficients from Rec.709 to choose the appropriate gamma
+// The gamma() function assumes that bright text will be displayed on a dark
+// background and that dark text will be displayed on bright background
+// The gamma coefficient is chosen to thicken or thin the text accordingly
+// The dot product used to compute the luminance could be approximated with
+// a simple max(color.r, color.g, color.b)
+const char* gFS_Gamma_Preamble =
+        "\n#define GAMMA (%.2f)\n"
+        "#define GAMMA_INV (%.2f)\n"
+        "\nfloat gamma(float a, const vec3 color) {\n"
+        "    float luminance = dot(color, vec3(0.2126, 0.7152, 0.0722));\n"
+        "    return pow(a, luminance < 0.5 ? GAMMA_INV : GAMMA);\n"
+        "}\n";
+
 const char* gFS_Main =
         "\nvoid main(void) {\n"
-        "    lowp vec4 fragColor;\n";
+        "    vec4 fragColor;\n";
 
-const char* gFS_Main_Dither[2] = {
-        // ES 2.0
-        "texture2D(ditherSampler, ditherTexCoords).a * " STR(DITHER_KERNEL_SIZE_INV_SQUARE),
-        // ES 3.0
-        "texture2D(ditherSampler, ditherTexCoords).a"
-};
-const char* gFS_Main_AddDitherToGradient =
-        "    gradientColor += %s;\n";
+const char* gFS_Main_AddDither =
+        "    fragColor = dither(fragColor);\n";
 
 // Fast cases
 const char* gFS_Fast_SingleColor =
@@ -202,24 +228,32 @@
         "\nvoid main(void) {\n"
         "    gl_FragColor = texture2D(baseSampler, outTexCoords);\n"
         "}\n\n";
+const char* gFS_Fast_SingleA8Texture_ApplyGamma =
+        "\nvoid main(void) {\n"
+        "    gl_FragColor = vec4(0.0, 0.0, 0.0, pow(texture2D(baseSampler, outTexCoords).a, GAMMA));\n"
+        "}\n\n";
 const char* gFS_Fast_SingleModulateA8Texture =
         "\nvoid main(void) {\n"
         "    gl_FragColor = color * texture2D(baseSampler, outTexCoords).a;\n"
         "}\n\n";
+const char* gFS_Fast_SingleModulateA8Texture_ApplyGamma =
+        "\nvoid main(void) {\n"
+        "    gl_FragColor = color * gamma(texture2D(baseSampler, outTexCoords).a, color.rgb);\n"
+        "}\n\n";
 const char* gFS_Fast_SingleGradient[2] = {
         "\nvoid main(void) {\n"
-        "    gl_FragColor = %s + texture2D(gradientSampler, linear);\n"
+        "    gl_FragColor = dither(texture2D(gradientSampler, linear));\n"
         "}\n\n",
         "\nvoid main(void) {\n"
-        "    gl_FragColor = %s + mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n"
+        "    gl_FragColor = dither(gammaMix(startColor, endColor, clamp(linear, 0.0, 1.0)));\n"
         "}\n\n",
 };
 const char* gFS_Fast_SingleModulateGradient[2] = {
         "\nvoid main(void) {\n"
-        "    gl_FragColor = %s + color.a * texture2D(gradientSampler, linear);\n"
+        "    gl_FragColor = dither(color.a * texture2D(gradientSampler, linear));\n"
         "}\n\n",
         "\nvoid main(void) {\n"
-        "    gl_FragColor = %s + color.a * mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n"
+        "    gl_FragColor = dither(color.a * gammaMix(startColor, endColor, clamp(linear, 0.0, 1.0)));\n"
         "}\n\n"
 };
 
@@ -239,29 +273,31 @@
         // Modulate
         "    fragColor = color * texture2D(baseSampler, outTexCoords);\n"
 };
-const char* gFS_Main_FetchA8Texture[2] = {
+const char* gFS_Main_FetchA8Texture[4] = {
         // Don't modulate
         "    fragColor = texture2D(baseSampler, outTexCoords);\n",
+        "    fragColor = texture2D(baseSampler, outTexCoords);\n",
         // Modulate
         "    fragColor = color * texture2D(baseSampler, outTexCoords).a;\n",
+        "    fragColor = color * gamma(texture2D(baseSampler, outTexCoords).a, color.rgb);\n",
 };
 const char* gFS_Main_FetchGradient[6] = {
         // Linear
         "    vec4 gradientColor = texture2D(gradientSampler, linear);\n",
 
-        "    vec4 gradientColor = mix(startColor, endColor, clamp(linear, 0.0, 1.0));\n",
+        "    vec4 gradientColor = gammaMix(startColor, endColor, clamp(linear, 0.0, 1.0));\n",
 
         // Circular
         "    vec4 gradientColor = texture2D(gradientSampler, vec2(length(circular), 0.5));\n",
 
-        "    vec4 gradientColor = mix(startColor, endColor, clamp(length(circular), 0.0, 1.0));\n",
+        "    vec4 gradientColor = gammaMix(startColor, endColor, clamp(length(circular), 0.0, 1.0));\n",
 
         // Sweep
         "    highp float index = atan(sweep.y, sweep.x) * 0.15915494309; // inv(2 * PI)\n"
         "    vec4 gradientColor = texture2D(gradientSampler, vec2(index - floor(index), 0.5));\n",
 
         "    highp float index = atan(sweep.y, sweep.x) * 0.15915494309; // inv(2 * PI)\n"
-        "    vec4 gradientColor = mix(startColor, endColor, clamp(index - floor(index), 0.0, 1.0));\n"
+        "    vec4 gradientColor = gammaMix(startColor, endColor, clamp(index - floor(index), 0.0, 1.0));\n"
 };
 const char* gFS_Main_FetchBitmap =
         "    vec4 bitmapColor = texture2D(bitmapSampler, outBitmapTexCoords);\n";
@@ -271,29 +307,38 @@
         "    fragColor = blendShaders(gradientColor, bitmapColor)";
 const char* gFS_Main_BlendShadersGB =
         "    fragColor = blendShaders(bitmapColor, gradientColor)";
-const char* gFS_Main_BlendShaders_Modulate[3] = {
+const char* gFS_Main_BlendShaders_Modulate[6] = {
         // Don't modulate
         ";\n",
+        ";\n",
         // Modulate
         " * color.a;\n",
+        " * color.a;\n",
         // Modulate with alpha 8 texture
         " * texture2D(baseSampler, outTexCoords).a;\n",
+        " * gamma(texture2D(baseSampler, outTexCoords).a, color.rgb);\n",
 };
-const char* gFS_Main_GradientShader_Modulate[3] = {
+const char* gFS_Main_GradientShader_Modulate[6] = {
         // Don't modulate
         "    fragColor = gradientColor;\n",
+        "    fragColor = gradientColor;\n",
         // Modulate
         "    fragColor = gradientColor * color.a;\n",
+        "    fragColor = gradientColor * color.a;\n",
         // Modulate with alpha 8 texture
         "    fragColor = gradientColor * texture2D(baseSampler, outTexCoords).a;\n",
+        "    fragColor = gradientColor * gamma(texture2D(baseSampler, outTexCoords).a, gradientColor.rgb);\n",
     };
-const char* gFS_Main_BitmapShader_Modulate[3] = {
+const char* gFS_Main_BitmapShader_Modulate[6] = {
         // Don't modulate
         "    fragColor = bitmapColor;\n",
+        "    fragColor = bitmapColor;\n",
         // Modulate
         "    fragColor = bitmapColor * color.a;\n",
+        "    fragColor = bitmapColor * color.a;\n",
         // Modulate with alpha 8 texture
         "    fragColor = bitmapColor * texture2D(baseSampler, outTexCoords).a;\n",
+        "    fragColor = bitmapColor * gamma(texture2D(baseSampler, outTexCoords).a, bitmapColor.rgb);\n",
     };
 const char* gFS_Main_FragColor =
         "    gl_FragColor = fragColor;\n";
@@ -385,7 +430,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 ProgramCache::ProgramCache(Extensions& extensions)
-        : mHasES3(extensions.getMajorGlVersion() >= 3) {
+        : mHasES3(extensions.getMajorGlVersion() >= 3)
+        , mHasSRGB(extensions.hasSRGB()) {
 }
 
 ProgramCache::~ProgramCache() {
@@ -518,6 +564,7 @@
 static bool shaderOp(const ProgramDescription& description, String8& shader,
         const int modulateOp, const char** snippets) {
     int op = description.hasAlpha8Texture ? MODULATE_OP_MODULATE_A8 : modulateOp;
+    op = op * 2 + description.hasGammaCorrection;
     shader.append(snippets[op]);
     return description.hasAlpha8Texture;
 }
@@ -570,13 +617,16 @@
         shader.append(gFS_Uniforms_ExternalTextureSampler);
     }
     if (description.hasGradient) {
-        shader.appendFormat(gFS_Uniforms_GradientSampler[description.isSimpleGradient],
-                gFS_Uniforms_Dither);
+        shader.append(gFS_Uniforms_GradientSampler[description.isSimpleGradient]);
     }
     if (description.hasRoundRectClip) {
         shader.append(gFS_Uniforms_HasRoundRectClip);
     }
 
+    if (description.hasGammaCorrection) {
+        shader.appendFormat(gFS_Gamma_Preamble, Properties::textGamma, 1.0f / Properties::textGamma);
+    }
+
     // Optimization for common cases
     if (!description.hasVertexAlpha
             && !blendFramebuffer
@@ -607,18 +657,26 @@
             fast = true;
         } else if (singleA8Texture) {
             if (!description.modulate) {
-                shader.append(gFS_Fast_SingleA8Texture);
+                if (description.hasGammaCorrection) {
+                    shader.append(gFS_Fast_SingleA8Texture_ApplyGamma);
+                } else {
+                    shader.append(gFS_Fast_SingleA8Texture);
+                }
             } else {
-                shader.append(gFS_Fast_SingleModulateA8Texture);
+                if (description.hasGammaCorrection) {
+                    shader.append(gFS_Fast_SingleModulateA8Texture_ApplyGamma);
+                } else {
+                    shader.append(gFS_Fast_SingleModulateA8Texture);
+                }
             }
             fast = true;
         } else if (singleGradient) {
+            shader.append(gFS_Gradient_Functions);
+            shader.append(gFS_Gradient_Preamble[mHasSRGB]);
             if (!description.modulate) {
-                shader.appendFormat(gFS_Fast_SingleGradient[description.isSimpleGradient],
-                        gFS_Main_Dither[mHasES3]);
+                shader.append(gFS_Fast_SingleGradient[description.isSimpleGradient]);
             } else {
-                shader.appendFormat(gFS_Fast_SingleModulateGradient[description.isSimpleGradient],
-                        gFS_Main_Dither[mHasES3]);
+                shader.append(gFS_Fast_SingleModulateGradient[description.isSimpleGradient]);
             }
             fast = true;
         }
@@ -652,6 +710,10 @@
     if (description.isBitmapNpot) {
         generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
     }
+    if (description.hasGradient) {
+        shader.append(gFS_Gradient_Functions);
+        shader.append(gFS_Gradient_Preamble[mHasSRGB]);
+    }
 
     // Begin the shader
     shader.append(gFS_Main); {
@@ -659,7 +721,8 @@
         if (description.hasTexture || description.hasExternalTexture) {
             if (description.hasAlpha8Texture) {
                 if (!description.hasGradient && !description.hasBitmap) {
-                    shader.append(gFS_Main_FetchA8Texture[modulateOp]);
+                    shader.append(
+                            gFS_Main_FetchA8Texture[modulateOp * 2 + description.hasGammaCorrection]);
                 }
             } else {
                 shader.append(gFS_Main_FetchTexture[modulateOp]);
@@ -671,7 +734,6 @@
         }
         if (description.hasGradient) {
             shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
-            shader.appendFormat(gFS_Main_AddDitherToGradient, gFS_Main_Dither[mHasES3]);
         }
         if (description.hasBitmap) {
             if (!description.isBitmapNpot) {
@@ -715,6 +777,10 @@
             }
         }
 
+        if (description.hasGradient) {
+            shader.append(gFS_Main_AddDither);
+        }
+
         // Output the fragment
         if (!blendFramebuffer) {
             shader.append(gFS_Main_FragColor);
diff --git a/libs/hwui/ProgramCache.h b/libs/hwui/ProgramCache.h
index 9ac885b..292ecdf 100644
--- a/libs/hwui/ProgramCache.h
+++ b/libs/hwui/ProgramCache.h
@@ -59,6 +59,7 @@
     std::map<programid, std::unique_ptr<Program>> mCache;
 
     const bool mHasES3;
+    const bool mHasSRGB;
 }; // class ProgramCache
 
 }; // namespace uirenderer
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index eedc9e7..92a49d2 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -203,7 +203,7 @@
 #define PROPERTY_TEXT_LARGE_CACHE_WIDTH "ro.hwui.text_large_cache_width"
 #define PROPERTY_TEXT_LARGE_CACHE_HEIGHT "ro.hwui.text_large_cache_height"
 
-// Gamma (>= 1.0, <= 10.0)
+// Gamma (>= 1.0, <= 3.0)
 #define PROPERTY_TEXT_GAMMA "hwui.text_gamma"
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -222,7 +222,7 @@
 
 #define DEFAULT_TEXTURE_CACHE_FLUSH_RATE 0.6f
 
-#define DEFAULT_TEXT_GAMMA 1.4f
+#define DEFAULT_TEXT_GAMMA 1.45f // Match design tools
 
 // cap to 256 to limite paths in the path cache
 #define DEFAULT_PATH_TEXTURE_CAP 256
diff --git a/libs/hwui/PropertyValuesHolder.cpp b/libs/hwui/PropertyValuesHolder.cpp
index 6ba0ab5..2a03e6a 100644
--- a/libs/hwui/PropertyValuesHolder.cpp
+++ b/libs/hwui/PropertyValuesHolder.cpp
@@ -16,6 +16,7 @@
 
 #include "PropertyValuesHolder.h"
 
+#include "utils/Color.h"
 #include "utils/VectorDrawableUtils.h"
 
 #include <utils/Log.h>
@@ -25,18 +26,26 @@
 
 using namespace VectorDrawable;
 
-inline U8CPU lerp(U8CPU fromValue, U8CPU toValue, float fraction) {
-    return (U8CPU) (fromValue * (1 - fraction) + toValue * fraction);
+inline constexpr float lerp(float fromValue, float toValue, float fraction) {
+    return float (fromValue * (1 - fraction) + toValue * fraction);
+}
+
+inline constexpr float linearize(U8CPU component) {
+    return EOCF_sRGB(component / 255.0f);
 }
 
 // TODO: Add a test for this
 void ColorEvaluator::evaluate(SkColor* outColor,
         const SkColor& fromColor, const SkColor& toColor, float fraction) const {
-    U8CPU alpha = lerp(SkColorGetA(fromColor), SkColorGetA(toColor), fraction);
-    U8CPU red = lerp(SkColorGetR(fromColor), SkColorGetR(toColor), fraction);
-    U8CPU green = lerp(SkColorGetG(fromColor), SkColorGetG(toColor), fraction);
-    U8CPU blue = lerp(SkColorGetB(fromColor), SkColorGetB(toColor), fraction);
-    *outColor = SkColorSetARGB(alpha, red, green, blue);
+    float a = lerp(SkColorGetA(fromColor) / 255.0f, SkColorGetA(toColor) / 255.0f, fraction);
+    float r = lerp(linearize(SkColorGetR(fromColor)), linearize(SkColorGetR(toColor)), fraction);
+    float g = lerp(linearize(SkColorGetG(fromColor)), linearize(SkColorGetG(toColor)), fraction);
+    float b = lerp(linearize(SkColorGetB(fromColor)), linearize(SkColorGetB(toColor)), fraction);
+    *outColor = SkColorSetARGB(
+            (U8CPU) roundf(a * 255.0f),
+            (U8CPU) roundf(OECF_sRGB(r) * 255.0f),
+            (U8CPU) roundf(OECF_sRGB(g) * 255.0f),
+            (U8CPU) roundf(OECF_sRGB(b) * 255.0f));
 }
 
 void PathEvaluator::evaluate(PathData* out,
diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp
index ddca122..22c6dfc 100644
--- a/libs/hwui/Readback.cpp
+++ b/libs/hwui/Readback.cpp
@@ -197,7 +197,7 @@
 
     Texture sourceTexture(caches);
     sourceTexture.wrap(sourceTexId,
-            sourceBuffer->getWidth(), sourceBuffer->getHeight(), 0 /* total lie */);
+            sourceBuffer->getWidth(), sourceBuffer->getHeight(), 0, 0 /* total lie */);
 
     CopyResult copyResult = copyTextureInto(caches, renderThread.renderState(),
             sourceTexture, texTransform, srcRect, bitmap);
diff --git a/libs/hwui/RecordedOp.h b/libs/hwui/RecordedOp.h
index a65c22c..ebc41b1 100644
--- a/libs/hwui/RecordedOp.h
+++ b/libs/hwui/RecordedOp.h
@@ -216,7 +216,6 @@
             : SUPER(BitmapOp)
             , bitmap(bitmap) {}
     const SkBitmap* bitmap;
-    // TODO: asset atlas/texture id lookup?
 };
 
 struct BitmapMeshOp : RecordedOp {
diff --git a/libs/hwui/SkiaShader.cpp b/libs/hwui/SkiaShader.cpp
index 6f4a683..5d9e5c0 100644
--- a/libs/hwui/SkiaShader.cpp
+++ b/libs/hwui/SkiaShader.cpp
@@ -173,15 +173,16 @@
         outData->gradientSampler = 0;
         outData->gradientTexture = nullptr;
 
-        outData->startColor.set(gradInfo.fColors[0]);
-        outData->endColor.set(gradInfo.fColors[1]);
+        outData->startColor.setSRGB(gradInfo.fColors[0]);
+        outData->endColor.setSRGB(gradInfo.fColors[1]);
     }
 
-    outData->ditherSampler = (*textureUnit)++;
     return true;
 }
 
-void applyGradient(Caches& caches, const SkiaShaderData::GradientShaderData& data) {
+void applyGradient(Caches& caches, const SkiaShaderData::GradientShaderData& data,
+        const GLsizei width, const GLsizei height) {
+
     if (CC_UNLIKELY(data.gradientTexture)) {
         caches.textureState().activateTexture(data.gradientSampler);
         bindTexture(&caches, data.gradientTexture, data.wrapST, data.wrapST);
@@ -191,10 +192,7 @@
         bindUniformColor(caches.program().getUniform("endColor"), data.endColor);
     }
 
-    // TODO: remove sampler slot incrementing from dither.setupProgram,
-    // since this assignment of slots is done at store, not apply time
-    GLuint ditherSampler = data.ditherSampler;
-    caches.dither.setupProgram(caches.program(), &ditherSampler);
+    glUniform2f(caches.program().getUniform("screenSize"), 1.0f / width, 1.0f / height);
     glUniformMatrix4fv(caches.program().getUniform("screenSpace"), 1,
             GL_FALSE, &data.screenSpace.data[0]);
 }
@@ -208,13 +206,7 @@
         return false;
     }
 
-    /*
-     * Bypass the AssetAtlas, since those textures:
-     * 1) require UV mapping, which isn't implemented in matrix computation below
-     * 2) can't handle REPEAT simply
-     * 3) are safe to upload here (outside of sync stage), since they're static
-     */
-    outData->bitmapTexture = caches.textureCache.getAndBypassAtlas(&bitmap);
+    outData->bitmapTexture = caches.textureCache.get(&bitmap);
     if (!outData->bitmapTexture) return false;
 
     outData->bitmapSampler = (*textureUnit)++;
@@ -388,11 +380,12 @@
     outData->skiaShaderType = kNone_SkiaShaderType;
 }
 
-void SkiaShader::apply(Caches& caches, const SkiaShaderData& data) {
+void SkiaShader::apply(Caches& caches, const SkiaShaderData& data,
+        const GLsizei width, const GLsizei height) {
     if (!data.skiaShaderType) return;
 
     if (data.skiaShaderType & kGradient_SkiaShaderType) {
-        applyGradient(caches, data.gradientData);
+        applyGradient(caches, data.gradientData, width, height);
     }
     if (data.skiaShaderType & kBitmap_SkiaShaderType) {
         applyBitmap(caches, data.bitmapData);
diff --git a/libs/hwui/SkiaShader.h b/libs/hwui/SkiaShader.h
index 884196d..5854289 100644
--- a/libs/hwui/SkiaShader.h
+++ b/libs/hwui/SkiaShader.h
@@ -62,7 +62,6 @@
     } bitmapData;
     struct GradientShaderData {
         Matrix4 screenSpace;
-        GLuint ditherSampler;
 
         // simple gradient
         FloatColor startColor;
@@ -72,7 +71,6 @@
         Texture* gradientTexture;
         GLuint gradientSampler;
         GLenum wrapST;
-
     } gradientData;
     struct LayerShaderData {
         Layer* layer;
@@ -90,7 +88,8 @@
     static void store(Caches& caches, const SkShader& shader, const Matrix4& modelViewMatrix,
             GLuint* textureUnit, ProgramDescription* description,
             SkiaShaderData* outData);
-    static void apply(Caches& caches, const SkiaShaderData& data);
+    static void apply(Caches& caches, const SkiaShaderData& data,
+            const GLsizei width, const GLsizei height);
 };
 
 }; // namespace uirenderer
diff --git a/libs/hwui/Texture.cpp b/libs/hwui/Texture.cpp
index 4f49a35..908f572 100644
--- a/libs/hwui/Texture.cpp
+++ b/libs/hwui/Texture.cpp
@@ -26,19 +26,23 @@
 namespace android {
 namespace uirenderer {
 
+// Number of bytes used by a texture in the given format
 static int bytesPerPixel(GLint glFormat) {
     switch (glFormat) {
     // The wrapped-texture case, usually means a SurfaceTexture
     case 0:
         return 0;
+    case GL_LUMINANCE:
     case GL_ALPHA:
         return 1;
+    case GL_SRGB8:
     case GL_RGB:
         return 3;
+    case GL_SRGB8_ALPHA8:
     case GL_RGBA:
         return 4;
     case GL_RGBA16F:
-        return 16;
+        return 8;
     default:
         LOG_ALWAYS_FATAL("UNKNOWN FORMAT %d", glFormat);
     }
@@ -83,14 +87,16 @@
     mId = 0;
 }
 
-bool Texture::updateSize(uint32_t width, uint32_t height, GLint format) {
-    if (mWidth == width && mHeight == height && mFormat == format) {
+bool Texture::updateSize(uint32_t width, uint32_t height, GLint internalFormat, GLint format) {
+    if (mWidth == width && mHeight == height &&
+            mFormat == format && mInternalFormat == internalFormat) {
         return false;
     }
     mWidth = width;
     mHeight = height;
     mFormat = format;
-    notifySizeChanged(mWidth * mHeight * bytesPerPixel(mFormat));
+    mInternalFormat = internalFormat;
+    notifySizeChanged(mWidth * mHeight * bytesPerPixel(internalFormat));
     return true;
 }
 
@@ -101,10 +107,10 @@
     mMagFilter = GL_LINEAR;
 }
 
-void Texture::upload(GLint internalformat, uint32_t width, uint32_t height,
+void Texture::upload(GLint internalFormat, uint32_t width, uint32_t height,
         GLenum format, GLenum type, const void* pixels) {
     GL_CHECKPOINT(MODERATE);
-    bool needsAlloc = updateSize(width, height, internalformat);
+    bool needsAlloc = updateSize(width, height, internalFormat, format);
     if (!mId) {
         glGenTextures(1, &mId);
         needsAlloc = true;
@@ -112,17 +118,17 @@
     }
     mCaches.textureState().bindTexture(GL_TEXTURE_2D, mId);
     if (needsAlloc) {
-        glTexImage2D(GL_TEXTURE_2D, 0, mFormat, mWidth, mHeight, 0,
+        glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, mWidth, mHeight, 0,
                 format, type, pixels);
     } else if (pixels) {
-        glTexSubImage2D(GL_TEXTURE_2D, 0, mFormat, mWidth, mHeight, 0,
+        glTexSubImage2D(GL_TEXTURE_2D, 0, internalFormat, mWidth, mHeight, 0,
                 format, type, pixels);
     }
     GL_CHECKPOINT(MODERATE);
 }
 
-static void uploadToTexture(bool resize, GLenum format, GLenum type, GLsizei stride, GLsizei bpp,
-        GLsizei width, GLsizei height, const GLvoid * data) {
+static void uploadToTexture(bool resize, GLint internalFormat, GLenum format, GLenum type,
+        GLsizei stride, GLsizei bpp, GLsizei width, GLsizei height, const GLvoid * data) {
 
     const bool useStride = stride != width
             && Caches::getInstance().extensions().hasUnpackRowLength();
@@ -132,7 +138,7 @@
         }
 
         if (resize) {
-            glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, type, data);
+            glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, width, height, 0, format, type, data);
         } else {
             glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, format, type, data);
         }
@@ -156,7 +162,7 @@
         }
 
         if (resize) {
-            glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, type, temp);
+            glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, width, height, 0, format, type, temp);
         } else {
             glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, format, type, temp);
         }
@@ -166,31 +172,44 @@
 }
 
 static void uploadSkBitmapToTexture(const SkBitmap& bitmap,
-        bool resize, GLenum format, GLenum type) {
-    uploadToTexture(resize, format, type, bitmap.rowBytesAsPixels(), bitmap.bytesPerPixel(),
-            bitmap.width(), bitmap.height(), bitmap.getPixels());
+        bool resize, GLint internalFormat, GLenum format, GLenum type) {
+    uploadToTexture(resize, internalFormat, format, type, bitmap.rowBytesAsPixels(),
+            bitmap.bytesPerPixel(), bitmap.width(), bitmap.height(), bitmap.getPixels());
 }
 
-static void colorTypeToGlFormatAndType(SkColorType colorType,
-        GLint* outFormat, GLint* outType) {
+static void colorTypeToGlFormatAndType(const Caches& caches, SkColorType colorType,
+        bool needSRGB, GLint* outInternalFormat, GLint* outFormat, GLint* outType) {
     switch (colorType) {
     case kAlpha_8_SkColorType:
         *outFormat = GL_ALPHA;
+        *outInternalFormat = GL_ALPHA;
         *outType = GL_UNSIGNED_BYTE;
         break;
     case kRGB_565_SkColorType:
-        *outFormat = GL_RGB;
-        *outType = GL_UNSIGNED_SHORT_5_6_5;
+        if (needSRGB) {
+            // We would ideally use a GL_RGB/GL_SRGB8 texture but the
+            // intermediate Skia bitmap needs to be ARGB_8888
+            *outFormat = GL_RGBA;
+            *outInternalFormat = caches.rgbaInternalFormat();
+            *outType = GL_UNSIGNED_BYTE;
+        } else {
+            *outFormat = GL_RGB;
+            *outInternalFormat = GL_RGB;
+            *outType = GL_UNSIGNED_SHORT_5_6_5;
+        }
         break;
     // ARGB_4444 and Index_8 are both upconverted to RGBA_8888
     case kARGB_4444_SkColorType:
     case kIndex_8_SkColorType:
     case kN32_SkColorType:
         *outFormat = GL_RGBA;
+        *outInternalFormat = caches.rgbaInternalFormat(needSRGB);
         *outType = GL_UNSIGNED_BYTE;
         break;
     case kGray_8_SkColorType:
+        // TODO: Handle sRGB
         *outFormat = GL_LUMINANCE;
+        *outInternalFormat = GL_LUMINANCE;
         *outType = GL_UNSIGNED_BYTE;
         break;
     default:
@@ -224,29 +243,36 @@
         setDefaultParams = true;
     }
 
-    GLint format, type;
-    colorTypeToGlFormatAndType(bitmap.colorType(), &format, &type);
+    sk_sp<SkColorSpace> sRGB = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
+    bool needSRGB = bitmap.colorSpace() == sRGB.get();
 
-    if (updateSize(bitmap.width(), bitmap.height(), format)) {
+    GLint internalFormat, format, type;
+    colorTypeToGlFormatAndType(mCaches, bitmap.colorType(), needSRGB, &internalFormat, &format, &type);
+
+    if (updateSize(bitmap.width(), bitmap.height(), internalFormat, format)) {
         needsAlloc = true;
     }
 
     blend = !bitmap.isOpaque();
     mCaches.textureState().bindTexture(mId);
 
+    // TODO: Handle sRGB gray bitmaps
+    bool hasSRGB = mCaches.extensions().hasSRGB();
     if (CC_UNLIKELY(bitmap.colorType() == kARGB_4444_SkColorType
-            || bitmap.colorType() == kIndex_8_SkColorType)) {
+            || bitmap.colorType() == kIndex_8_SkColorType
+            || (bitmap.colorType() == kRGB_565_SkColorType && hasSRGB && needSRGB))) {
+
         SkBitmap rgbaBitmap;
-        rgbaBitmap.allocPixels(SkImageInfo::MakeN32(mWidth, mHeight,
-                bitmap.alphaType()));
+        rgbaBitmap.allocPixels(SkImageInfo::MakeN32(
+                mWidth, mHeight, bitmap.alphaType(), hasSRGB ? sRGB : nullptr));
         rgbaBitmap.eraseColor(0);
 
         SkCanvas canvas(rgbaBitmap);
         canvas.drawBitmap(bitmap, 0.0f, 0.0f, nullptr);
 
-        uploadSkBitmapToTexture(rgbaBitmap, needsAlloc, format, type);
+        uploadSkBitmapToTexture(rgbaBitmap, needsAlloc, internalFormat, format, type);
     } else {
-        uploadSkBitmapToTexture(bitmap, needsAlloc, format, type);
+        uploadSkBitmapToTexture(bitmap, needsAlloc, internalFormat, format, type);
     }
 
     if (canMipMap) {
@@ -262,11 +288,12 @@
     }
 }
 
-void Texture::wrap(GLuint id, uint32_t width, uint32_t height, GLint format) {
+void Texture::wrap(GLuint id, uint32_t width, uint32_t height, GLint internalFormat, GLint format) {
     mId = id;
     mWidth = width;
     mHeight = height;
     mFormat = format;
+    mInternalFormat = internalFormat;
     // We're wrapping an existing texture, so don't double count this memory
     notifySizeChanged(0);
 }
diff --git a/libs/hwui/Texture.h b/libs/hwui/Texture.h
index b72742f..aa8a6d3 100644
--- a/libs/hwui/Texture.h
+++ b/libs/hwui/Texture.h
@@ -69,8 +69,8 @@
      *
      * The image data is undefined after calling this.
      */
-    void resize(uint32_t width, uint32_t height, GLint format) {
-        upload(format, width, height, format, GL_UNSIGNED_BYTE, nullptr);
+    void resize(uint32_t width, uint32_t height, GLint internalFormat, GLint format) {
+        upload(internalFormat, width, height, format, GL_UNSIGNED_BYTE, nullptr);
     }
 
     /**
@@ -85,13 +85,13 @@
     /**
      * Basically glTexImage2D/glTexSubImage2D.
      */
-    void upload(GLint internalformat, uint32_t width, uint32_t height,
+    void upload(GLint internalFormat, uint32_t width, uint32_t height,
             GLenum format, GLenum type, const void* pixels);
 
     /**
      * Wraps an existing texture.
      */
-    void wrap(GLuint id, uint32_t width, uint32_t height, GLint format);
+    void wrap(GLuint id, uint32_t width, uint32_t height, GLint internalFormat, GLint format);
 
     GLuint id() const {
         return mId;
@@ -109,6 +109,10 @@
         return mFormat;
     }
 
+    GLint internalFormat() const {
+        return mInternalFormat;
+    }
+
     /**
      * Generation of the backing bitmap,
      */
@@ -148,13 +152,14 @@
     friend class Layer;
 
     // Returns true if the size changed, false if it was the same
-    bool updateSize(uint32_t width, uint32_t height, GLint format);
+    bool updateSize(uint32_t width, uint32_t height, GLint internalFormat, GLint format);
     void resetCachedParams();
 
     GLuint mId = 0;
     uint32_t mWidth = 0;
     uint32_t mHeight = 0;
     GLint mFormat = 0;
+    GLint mInternalFormat = 0;
 
     /* See GLES spec section 3.8.14
      * "In the initial state, the value assigned to TEXTURE_MIN_FILTER is
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp
index 523924a..5ccdbda 100644
--- a/libs/hwui/TextureCache.cpp
+++ b/libs/hwui/TextureCache.cpp
@@ -18,7 +18,6 @@
 
 #include <utils/Mutex.h>
 
-#include "AssetAtlas.h"
 #include "Caches.h"
 #include "Texture.h"
 #include "TextureCache.h"
@@ -36,8 +35,7 @@
         : mCache(LruCache<uint32_t, Texture*>::kUnlimitedCapacity)
         , mSize(0)
         , mMaxSize(Properties::textureCacheSize)
-        , mFlushRate(Properties::textureCacheFlushRate)
-        , mAssetAtlas(nullptr) {
+        , mFlushRate(Properties::textureCacheFlushRate) {
     mCache.setOnEntryRemovedListener(this);
 
     glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize);
@@ -84,10 +82,6 @@
 // Caching
 ///////////////////////////////////////////////////////////////////////////////
 
-void TextureCache::setAssetAtlas(AssetAtlas* assetAtlas) {
-    mAssetAtlas = assetAtlas;
-}
-
 void TextureCache::resetMarkInUse(void* ownerToken) {
     LruCache<uint32_t, Texture*>::Iterator iter(mCache);
     while (iter.next()) {
@@ -108,14 +102,7 @@
 
 // Returns a prepared Texture* that either is already in the cache or can fit
 // in the cache (and is thus added to the cache)
-Texture* TextureCache::getCachedTexture(const SkBitmap* bitmap, AtlasUsageType atlasUsageType) {
-    if (CC_LIKELY(mAssetAtlas != nullptr) && atlasUsageType == AtlasUsageType::Use) {
-        AssetAtlas::Entry* entry = mAssetAtlas->getEntry(bitmap->pixelRef());
-        if (CC_UNLIKELY(entry)) {
-            return entry->texture;
-        }
-    }
-
+Texture* TextureCache::getCachedTexture(const SkBitmap* bitmap) {
     Texture* texture = mCache.get(bitmap->pixelRef()->getStableID());
 
     if (!texture) {
@@ -160,7 +147,7 @@
 }
 
 bool TextureCache::prefetchAndMarkInUse(void* ownerToken, const SkBitmap* bitmap) {
-    Texture* texture = getCachedTexture(bitmap, AtlasUsageType::Use);
+    Texture* texture = getCachedTexture(bitmap);
     if (texture) {
         texture->isInUse = ownerToken;
     }
@@ -168,11 +155,11 @@
 }
 
 bool TextureCache::prefetch(const SkBitmap* bitmap) {
-    return getCachedTexture(bitmap, AtlasUsageType::Use);
+    return getCachedTexture(bitmap);
 }
 
-Texture* TextureCache::get(const SkBitmap* bitmap, AtlasUsageType atlasUsageType) {
-    Texture* texture = getCachedTexture(bitmap, atlasUsageType);
+Texture* TextureCache::get(const SkBitmap* bitmap) {
+    Texture* texture = getCachedTexture(bitmap);
 
     if (!texture) {
         if (!canMakeTextureFromBitmap(bitmap)) {
diff --git a/libs/hwui/TextureCache.h b/libs/hwui/TextureCache.h
index 0a61b6b..88ef771 100644
--- a/libs/hwui/TextureCache.h
+++ b/libs/hwui/TextureCache.h
@@ -47,8 +47,6 @@
 // Classes
 ///////////////////////////////////////////////////////////////////////////////
 
-class AssetAtlas;
-
 /**
  * A simple LRU texture cache. The cache has a maximum size expressed in bytes.
  * Any texture added to the cache causing the cache to grow beyond the maximum
@@ -85,20 +83,10 @@
     bool prefetch(const SkBitmap* bitmap);
 
     /**
-     * Returns the texture associated with the specified bitmap from either within the cache, or
-     * the AssetAtlas. If the texture cannot be found in the cache, a new texture is generated.
+     * Returns the texture associated with the specified bitmap from within the cache.
+     * If the texture cannot be found in the cache, a new texture is generated.
      */
-    Texture* get(const SkBitmap* bitmap) {
-        return get(bitmap, AtlasUsageType::Use);
-    }
-
-    /**
-     * Returns the texture associated with the specified bitmap. If the texture cannot be found in
-     * the cache, a new texture is generated, even if it resides in the AssetAtlas.
-     */
-    Texture* getAndBypassAtlas(const SkBitmap* bitmap) {
-        return get(bitmap, AtlasUsageType::Bypass);
-    }
+    Texture* get(const SkBitmap* bitmap);
 
     /**
      * Removes the texture associated with the specified pixelRef. This is meant
@@ -130,18 +118,10 @@
      */
     void flush();
 
-    void setAssetAtlas(AssetAtlas* assetAtlas);
-
 private:
-    enum class AtlasUsageType {
-        Use,
-        Bypass,
-    };
-
     bool canMakeTextureFromBitmap(const SkBitmap* bitmap);
 
-    Texture* get(const SkBitmap* bitmap, AtlasUsageType atlasUsageType);
-    Texture* getCachedTexture(const SkBitmap* bitmap, AtlasUsageType atlasUsageType);
+    Texture* getCachedTexture(const SkBitmap* bitmap);
 
     LruCache<uint32_t, Texture*> mCache;
 
@@ -155,8 +135,6 @@
 
     std::vector<uint32_t> mGarbage;
     mutable Mutex mLock;
-
-    AssetAtlas* mAssetAtlas;
 }; // class TextureCache
 
 }; // namespace uirenderer
diff --git a/libs/hwui/VectorDrawable.cpp b/libs/hwui/VectorDrawable.cpp
index 2b79941..a2f3cb6 100644
--- a/libs/hwui/VectorDrawable.cpp
+++ b/libs/hwui/VectorDrawable.cpp
@@ -202,7 +202,9 @@
     if (properties.getFillGradient() != nullptr) {
         paint.setColor(applyAlpha(SK_ColorBLACK, properties.getFillAlpha()));
         SkShader* newShader = properties.getFillGradient()->newWithLocalMatrix(matrix);
-        paint.setShader(newShader);
+        // newWithLocalMatrix(...) creates a new SkShader and returns a bare pointer. We need to
+        // remove the extra ref so that the ref count is correctly managed.
+        paint.setShader(newShader)->unref();
         needsFill = true;
     } else if (properties.getFillColor() != SK_ColorTRANSPARENT) {
         paint.setColor(applyAlpha(properties.getFillColor(), properties.getFillAlpha()));
@@ -222,7 +224,9 @@
     if (properties.getStrokeGradient() != nullptr) {
         paint.setColor(applyAlpha(SK_ColorBLACK, properties.getStrokeAlpha()));
         SkShader* newShader = properties.getStrokeGradient()->newWithLocalMatrix(matrix);
-        paint.setShader(newShader);
+        // newWithLocalMatrix(...) creates a new SkShader and returns a bare pointer. We need to
+        // remove the extra ref so that the ref count is correctly managed.
+        paint.setShader(newShader)->unref();
         needsStroke = true;
     } else if (properties.getStrokeColor() != SK_ColorTRANSPARENT) {
         paint.setColor(applyAlpha(properties.getStrokeColor(), properties.getStrokeAlpha()));
@@ -561,8 +565,12 @@
 
 bool Tree::allocateBitmapIfNeeded(SkBitmap* outCache, int width, int height) {
     if (!canReuseBitmap(*outCache, width, height)) {
-        SkImageInfo info = SkImageInfo::Make(width, height,
-                kN32_SkColorType, kPremul_SkAlphaType);
+#ifndef ANDROID_ENABLE_LINEAR_BLENDING
+        sk_sp<SkColorSpace> colorSpace = nullptr;
+#else
+        sk_sp<SkColorSpace> colorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
+#endif
+        SkImageInfo info = SkImageInfo::MakeN32(width, height, kPremul_SkAlphaType, colorSpace);
         outCache->setInfo(info);
         // TODO: Count the bitmap cache against app's java heap
         outCache->allocPixels(info);
diff --git a/libs/hwui/Vertex.h b/libs/hwui/Vertex.h
index c1bf980..db982ad 100644
--- a/libs/hwui/Vertex.h
+++ b/libs/hwui/Vertex.h
@@ -19,6 +19,7 @@
 
 #include "Vector.h"
 
+#include "FloatColor.h"
 #include "utils/Macros.h"
 
 namespace android {
@@ -76,21 +77,19 @@
 REQUIRE_COMPATIBLE_LAYOUT(TextureVertex);
 
 /**
- * Simple structure to describe a vertex with a position, texture UV and ARGB color.
+ * Simple structure to describe a vertex with a position, texture UV and an
+ * sRGB color with alpha. The color is stored pre-multiplied in linear space.
  */
 struct ColorTextureVertex {
     float x, y;
     float u, v;
-    float r, g, b, a;
+    float r, g, b, a; // pre-multiplied linear
 
     static inline void set(ColorTextureVertex* vertex, float x, float y,
-            float u, float v, int color) {
-
-        float a =     ((color >> 24) & 0xff) / 255.0f;
-        float r = a * ((color >> 16) & 0xff) / 255.0f;
-        float g = a * ((color >>  8) & 0xff) / 255.0f;
-        float b = a * ((color) & 0xff) / 255.0f;
-        *vertex = { x, y, u, v, r, g, b, a };
+            float u, float v, uint32_t color) {
+        FloatColor c;
+        c.set(color);
+        *vertex = { x, y, u, v, c.r, c.g, c.b, c.a };
     }
 }; // struct ColorTextureVertex
 
diff --git a/libs/hwui/font/CacheTexture.cpp b/libs/hwui/font/CacheTexture.cpp
index 49e9f65..e2844ad 100644
--- a/libs/hwui/font/CacheTexture.cpp
+++ b/libs/hwui/font/CacheTexture.cpp
@@ -180,7 +180,12 @@
         mPixelBuffer = PixelBuffer::create(mFormat, getWidth(), getHeight());
     }
 
-    mTexture.resize(mWidth, mHeight, mFormat);
+    GLint internalFormat = mFormat;
+    if (mFormat == GL_RGBA) {
+        internalFormat = mCaches.rgbaInternalFormat();
+    }
+
+    mTexture.resize(mWidth, mHeight, internalFormat, mFormat);
     mTexture.setFilter(getLinearFiltering() ? GL_LINEAR : GL_NEAREST);
     mTexture.setWrap(GL_CLAMP_TO_EDGE);
 }
diff --git a/libs/hwui/hwui/PixelRef.cpp b/libs/hwui/hwui/PixelRef.cpp
new file mode 100644
index 0000000..795de6b
--- /dev/null
+++ b/libs/hwui/hwui/PixelRef.cpp
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+#include "PixelRef.h"
+
+#include "Caches.h"
+
+#include <cutils/log.h>
+#include <sys/mman.h>
+#include <cutils/ashmem.h>
+
+namespace android {
+
+void PixelRef::reconfigure(const SkImageInfo& newInfo, size_t rowBytes, SkColorTable* ctable) {
+    if (kIndex_8_SkColorType != newInfo.colorType()) {
+        ctable = nullptr;
+    }
+    mRowBytes = rowBytes;
+    if (mColorTable.get() != ctable) {
+        mColorTable.reset(ctable);
+    }
+
+    // Need to validate the alpha type to filter against the color type
+    // to prevent things like a non-opaque RGB565 bitmap
+    SkAlphaType alphaType;
+    LOG_ALWAYS_FATAL_IF(!SkColorTypeValidateAlphaType(
+            newInfo.colorType(), newInfo.alphaType(), &alphaType),
+            "Failed to validate alpha type!");
+
+    // Dirty hack is dirty
+    // TODO: Figure something out here, Skia's current design makes this
+    // really hard to work with. Skia really, really wants immutable objects,
+    // but with the nested-ref-count hackery going on that's just not
+    // feasible without going insane trying to figure it out
+    SkImageInfo* myInfo = const_cast<SkImageInfo*>(&this->info());
+    *myInfo = newInfo;
+    changeAlphaType(alphaType);
+
+    // Docs say to only call this in the ctor, but we're going to call
+    // it anyway even if this isn't always the ctor.
+    // TODO: Fix this too as part of the above TODO
+    setPreLocked(getStorage(), mRowBytes, mColorTable.get());
+}
+
+PixelRef::PixelRef(void* address, size_t size, const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
+            : SkPixelRef(info)
+            , mPixelStorageType(PixelStorageType::Heap) {
+    mPixelStorage.heap.address = address;
+    mPixelStorage.heap.size = size;
+    reconfigure(info, rowBytes, ctable);
+}
+
+PixelRef::PixelRef(void* address, void* context, FreeFunc freeFunc,
+                const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
+            : SkPixelRef(info)
+            , mPixelStorageType(PixelStorageType::External) {
+    mPixelStorage.external.address = address;
+    mPixelStorage.external.context = context;
+    mPixelStorage.external.freeFunc = freeFunc;
+    reconfigure(info, rowBytes, ctable);
+}
+
+PixelRef::PixelRef(void* address, int fd, size_t mappedSize,
+                const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
+            : SkPixelRef(info)
+            , mPixelStorageType(PixelStorageType::Ashmem) {
+    mPixelStorage.ashmem.address = address;
+    mPixelStorage.ashmem.fd = fd;
+    mPixelStorage.ashmem.size = mappedSize;
+    reconfigure(info, rowBytes, ctable);
+}
+
+PixelRef::~PixelRef() {
+    switch (mPixelStorageType) {
+    case PixelStorageType::External:
+        mPixelStorage.external.freeFunc(mPixelStorage.external.address,
+                mPixelStorage.external.context);
+        break;
+    case PixelStorageType::Ashmem:
+        munmap(mPixelStorage.ashmem.address, mPixelStorage.ashmem.size);
+        close(mPixelStorage.ashmem.fd);
+        break;
+    case PixelStorageType::Heap:
+        free(mPixelStorage.heap.address);
+        break;
+    }
+
+    if (android::uirenderer::Caches::hasInstance()) {
+        android::uirenderer::Caches::getInstance().textureCache.releaseTexture(getStableID());
+    }
+}
+
+bool PixelRef::hasHardwareMipMap() const {
+    return mHasHardwareMipMap;
+}
+
+void PixelRef::setHasHardwareMipMap(bool hasMipMap) {
+    mHasHardwareMipMap = hasMipMap;
+}
+
+void* PixelRef::getStorage() const {
+    switch (mPixelStorageType) {
+    case PixelStorageType::External:
+        return mPixelStorage.external.address;
+    case PixelStorageType::Ashmem:
+        return mPixelStorage.ashmem.address;
+    case PixelStorageType::Heap:
+        return mPixelStorage.heap.address;
+    }
+}
+
+bool PixelRef::onNewLockPixels(LockRec* rec) {
+    rec->fPixels = getStorage();
+    rec->fRowBytes = mRowBytes;
+    rec->fColorTable = mColorTable.get();
+    return true;
+}
+
+size_t PixelRef::getAllocatedSizeInBytes() const {
+    return info().getSafeSize(mRowBytes);
+}
+
+int PixelRef::getAshmemFd() const {
+    switch (mPixelStorageType) {
+    case PixelStorageType::Ashmem:
+        return mPixelStorage.ashmem.fd;
+    default:
+        return -1;
+    }
+}
+
+size_t PixelRef::getAllocationByteCount() const {
+    switch (mPixelStorageType) {
+    case PixelStorageType::Heap:
+        return mPixelStorage.heap.size;
+    default:
+        return rowBytes() * height();
+    }
+}
+
+void PixelRef::reconfigure(const SkImageInfo& info) {
+    reconfigure(info, info.minRowBytes(), nullptr);
+}
+
+void PixelRef::setAlphaType(SkAlphaType alphaType) {
+    if (!SkColorTypeValidateAlphaType(info().colorType(), alphaType, &alphaType)) {
+        return;
+    }
+
+    changeAlphaType(alphaType);
+}
+
+void PixelRef::getSkBitmap(SkBitmap* outBitmap) {
+    outBitmap->setInfo(info(), rowBytes());
+    outBitmap->setPixelRef(this);
+    outBitmap->setHasHardwareMipMap(mHasHardwareMipMap);
+}
+
+} // namespace android
\ No newline at end of file
diff --git a/libs/hwui/hwui/PixelRef.h b/libs/hwui/hwui/PixelRef.h
new file mode 100644
index 0000000..3f8aea6
--- /dev/null
+++ b/libs/hwui/hwui/PixelRef.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+#pragma once
+
+#include <SkBitmap.h>
+#include <SkColorTable.h>
+#include <SkImageInfo.h>
+#include <SkPixelRef.h>
+#include <cutils/compiler.h>
+
+namespace android {
+
+enum class PixelStorageType {
+    External,
+    Heap,
+    Ashmem,
+};
+
+typedef void (*FreeFunc)(void* addr, void* context);
+
+class ANDROID_API PixelRef : public SkPixelRef {
+public:
+    PixelRef(void* address, size_t allocSize, const SkImageInfo& info, size_t rowBytes,
+            SkColorTable* ctable);
+    PixelRef(void* address, void* context, FreeFunc freeFunc,
+            const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable);
+    PixelRef(void* address, int fd, size_t mappedSize, const SkImageInfo& info,
+            size_t rowBytes, SkColorTable* ctable);
+
+    int width() const { return info().width(); }
+    int height() const { return info().height(); }
+
+    // Can't mark as override since SkPixelRef::rowBytes isn't virtual
+    // but that's OK since we just want Bitmap to be able to rely
+    // on calling rowBytes() on an unlocked pixelref, which it will be
+    // doing on a PixelRef type, not a SkPixelRef, so static
+    // dispatching will do what we want.
+    size_t rowBytes() const { return mRowBytes; }
+    void reconfigure(const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable);
+    void reconfigure(const SkImageInfo& info);
+    void setAlphaType(SkAlphaType alphaType);
+
+    void getSkBitmap(SkBitmap* outBitmap);
+
+    int getAshmemFd() const;
+    size_t getAllocationByteCount() const;
+
+protected:
+    virtual bool onNewLockPixels(LockRec* rec) override;
+    virtual void onUnlockPixels() override { };
+    virtual size_t getAllocatedSizeInBytes() const override;
+private:
+    friend class Bitmap;
+    virtual ~PixelRef();
+    void doFreePixels();
+    void* getStorage() const;
+    void setHasHardwareMipMap(bool hasMipMap);
+    bool hasHardwareMipMap() const;
+
+    PixelStorageType mPixelStorageType;
+
+    size_t mRowBytes = 0;
+    sk_sp<SkColorTable> mColorTable;
+    bool mHasHardwareMipMap = false;
+
+    union {
+        struct {
+            void* address;
+            void* context;
+            FreeFunc freeFunc;
+        } external;
+        struct {
+            void* address;
+            int fd;
+            size_t size;
+        } ashmem;
+        struct {
+            void* address;
+            size_t size;
+        } heap;
+    } mPixelStorage;
+};
+
+} //namespace android
\ No newline at end of file
diff --git a/libs/hwui/renderstate/OffscreenBufferPool.cpp b/libs/hwui/renderstate/OffscreenBufferPool.cpp
index 10a26e0..a9bbb27 100644
--- a/libs/hwui/renderstate/OffscreenBufferPool.cpp
+++ b/libs/hwui/renderstate/OffscreenBufferPool.cpp
@@ -22,6 +22,7 @@
 #include "utils/FatVector.h"
 #include "utils/TraceUtils.h"
 
+#include <utils/Color.h>
 #include <utils/Log.h>
 
 #include <GLES2/gl2.h>
@@ -44,7 +45,7 @@
     uint32_t height = computeIdealDimension(viewportHeight);
     ATRACE_FORMAT("Allocate %ux%u HW Layer", width, height);
     caches.textureState().activateTexture(0);
-    texture.resize(width, height, GL_RGBA);
+    texture.resize(width, height, caches.rgbaInternalFormat(), GL_RGBA);
     texture.blend = true;
     texture.setWrap(GL_CLAMP_TO_EDGE);
     // not setting filter on texture, since it's set when drawing, based on transform
diff --git a/libs/hwui/renderstate/RenderState.cpp b/libs/hwui/renderstate/RenderState.cpp
index ee4619d..84ab3f3 100644
--- a/libs/hwui/renderstate/RenderState.cpp
+++ b/libs/hwui/renderstate/RenderState.cpp
@@ -52,7 +52,6 @@
         mCaches = &Caches::createInstance(*this);
     }
     mCaches->init();
-    mCaches->textureCache.setAssetAtlas(&mAssetAtlas);
 }
 
 static void layerLostGlContext(Layer* layer) {
@@ -64,7 +63,6 @@
 
     // TODO: reset all cached state in state objects
     std::for_each(mActiveLayers.begin(), mActiveLayers.end(), layerLostGlContext);
-    mAssetAtlas.terminate();
 
     mCaches->terminate();
 
@@ -147,9 +145,17 @@
     meshState().resetVertexPointers();
     meshState().disableTexCoordsVertexArray();
     debugOverdraw(false, false);
+    // TODO: We need a way to know whether the functor is sRGB aware (b/32072673)
+    if (mCaches->extensions().hasSRGBWriteControl()) {
+        glDisable(GL_FRAMEBUFFER_SRGB_EXT);
+    }
 }
 
 void RenderState::resumeFromFunctorInvoke() {
+    if (mCaches->extensions().hasSRGBWriteControl()) {
+        glEnable(GL_FRAMEBUFFER_SRGB_EXT);
+    }
+
     glViewport(0, 0, mViewportWidth, mViewportHeight);
     glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer);
     debugOverdraw(false, false);
@@ -308,7 +314,7 @@
         glVertexAttribPointer(alphaLocation, 1, GL_FLOAT, GL_FALSE, vertices.stride, alphaCoords);
     }
     // Shader uniforms
-    SkiaShader::apply(*mCaches, fill.skiaShaderData);
+    SkiaShader::apply(*mCaches, fill.skiaShaderData, mViewportWidth, mViewportHeight);
 
     GL_CHECKPOINT(MODERATE);
     Texture* texture = (fill.skiaShaderData.skiaShaderType & kBitmap_SkiaShaderType) ?
diff --git a/libs/hwui/renderstate/RenderState.h b/libs/hwui/renderstate/RenderState.h
index 9e0fb12..3d119dc 100644
--- a/libs/hwui/renderstate/RenderState.h
+++ b/libs/hwui/renderstate/RenderState.h
@@ -16,7 +16,6 @@
 #ifndef RENDERSTATE_H
 #define RENDERSTATE_H
 
-#include "AssetAtlas.h"
 #include "Caches.h"
 #include "Glop.h"
 #include "renderstate/Blend.h"
@@ -92,7 +91,6 @@
 
     void render(const Glop& glop, const Matrix4& orthoMatrix);
 
-    AssetAtlas& assetAtlas() { return mAssetAtlas; }
     Blend& blend() { return *mBlend; }
     MeshState& meshState() { return *mMeshState; }
     Scissor& scissor() { return *mScissor; }
@@ -120,7 +118,6 @@
 
     OffscreenBufferPool mLayerPool;
 
-    AssetAtlas mAssetAtlas;
     std::set<Layer*> mActiveLayers;
     std::set<renderthread::CanvasContext*> mRegisteredContexts;
 
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 0f2d55b..fe0f56a 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -545,11 +545,6 @@
     return mRenderPipeline->createTextureLayer();
 }
 
-void CanvasContext::setTextureAtlas(RenderThread& thread,
-        const sp<GraphicBuffer>& buffer, int64_t* map, size_t mapSize) {
-    thread.eglManager().setTextureAtlas(buffer, map, mapSize);
-}
-
 void CanvasContext::dumpFrames(int fd) {
     FILE* file = fdopen(fd, "a");
     fprintf(file, "\n\n---PROFILEDATA---\n");
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index 652cddd..41b658e 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -119,9 +119,6 @@
 
     DeferredLayerUpdater* createTextureLayer();
 
-    ANDROID_API static void setTextureAtlas(RenderThread& thread,
-            const sp<GraphicBuffer>& buffer, int64_t* map, size_t mapSize);
-
     void stopDrawing();
     void notifyFramePending();
 
diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp
index 86731c9..beda045 100644
--- a/libs/hwui/renderthread/EglManager.cpp
+++ b/libs/hwui/renderthread/EglManager.cpp
@@ -91,9 +91,7 @@
         , mEglConfig(nullptr)
         , mEglContext(EGL_NO_CONTEXT)
         , mPBufferSurface(EGL_NO_SURFACE)
-        , mCurrentSurface(EGL_NO_SURFACE)
-        , mAtlasMap(nullptr)
-        , mAtlasMapSize(0) {
+        , mCurrentSurface(EGL_NO_SURFACE) {
 }
 
 void EglManager::initialize() {
@@ -128,7 +126,6 @@
     makeCurrent(mPBufferSurface);
     DeviceInfo::initialize();
     mRenderThread.renderState().onGLContextCreated();
-    initAtlas();
 }
 
 void EglManager::initExtensions() {
@@ -191,32 +188,6 @@
         "Failed to create context, error = %s", egl_error_str());
 }
 
-void EglManager::setTextureAtlas(const sp<GraphicBuffer>& buffer,
-        int64_t* map, size_t mapSize) {
-
-    // Already initialized
-    if (mAtlasBuffer.get()) {
-        ALOGW("Multiple calls to setTextureAtlas!");
-        delete map;
-        return;
-    }
-
-    mAtlasBuffer = buffer;
-    mAtlasMap = map;
-    mAtlasMapSize = mapSize;
-
-    if (hasEglContext()) {
-        initAtlas();
-    }
-}
-
-void EglManager::initAtlas() {
-    if (mAtlasBuffer.get()) {
-        mRenderThread.renderState().assetAtlas().init(mAtlasBuffer,
-                mAtlasMap, mAtlasMapSize);
-    }
-}
-
 void EglManager::createPBufferSurface() {
     LOG_ALWAYS_FATAL_IF(mEglDisplay == EGL_NO_DISPLAY,
             "usePBufferSurface() called on uninitialized GlobalContext!");
@@ -229,7 +200,16 @@
 
 EGLSurface EglManager::createSurface(EGLNativeWindowType window) {
     initialize();
-    EGLSurface surface = eglCreateWindowSurface(mEglDisplay, mEglConfig, window, nullptr);
+
+    EGLint attribs[] = {
+#ifdef ANDROID_ENABLE_LINEAR_BLENDING
+            EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR,
+            EGL_COLORSPACE, EGL_COLORSPACE_sRGB,
+#endif
+            EGL_NONE
+    };
+
+    EGLSurface surface = eglCreateWindowSurface(mEglDisplay, mEglConfig, window, attribs);
     LOG_ALWAYS_FATAL_IF(surface == EGL_NO_SURFACE,
             "Failed to create EGLSurface for window %p, eglErr = %s",
             (void*) window, egl_error_str());
diff --git a/libs/hwui/renderthread/EglManager.h b/libs/hwui/renderthread/EglManager.h
index 41047fe..ba4a3e1 100644
--- a/libs/hwui/renderthread/EglManager.h
+++ b/libs/hwui/renderthread/EglManager.h
@@ -79,8 +79,6 @@
     // Returns true iff the surface is now preserving buffers.
     bool setPreserveBuffer(EGLSurface surface, bool preserve);
 
-    void setTextureAtlas(const sp<GraphicBuffer>& buffer, int64_t* map, size_t mapSize);
-
     void fence();
 
 private:
@@ -94,7 +92,6 @@
     void createPBufferSurface();
     void loadConfig();
     void createContext();
-    void initAtlas();
     EGLint queryBufferAge(EGLSurface surface);
 
     RenderThread& mRenderThread;
@@ -106,10 +103,6 @@
 
     EGLSurface mCurrentSurface;
 
-    sp<GraphicBuffer> mAtlasBuffer;
-    int64_t* mAtlasMap;
-    size_t mAtlasMapSize;
-
     enum class SwapBehavior {
         Discard,
         Preserved,
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index dcbc980..c2ed864 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -480,23 +480,6 @@
     staticPostAndWait(task);
 }
 
-CREATE_BRIDGE4(setTextureAtlas, RenderThread* thread, GraphicBuffer* buffer, int64_t* map,
-               size_t size) {
-    CanvasContext::setTextureAtlas(*args->thread, args->buffer, args->map, args->size);
-    args->buffer->decStrong(nullptr);
-    return nullptr;
-}
-
-void RenderProxy::setTextureAtlas(const sp<GraphicBuffer>& buffer, int64_t* map, size_t size) {
-    SETUP_TASK(setTextureAtlas);
-    args->thread = &mRenderThread;
-    args->buffer = buffer.get();
-    args->buffer->incStrong(nullptr);
-    args->map = map;
-    args->size = size;
-    post(task);
-}
-
 CREATE_BRIDGE2(setProcessStatsBuffer, RenderThread* thread, int fd) {
     args->thread->jankTracker().switchStorageToAshmem(args->fd);
     close(args->fd);
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index d4aaea6..50a6f64 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -112,7 +112,6 @@
     uint32_t frameTimePercentile(int p);
     ANDROID_API static void dumpGraphicsMemory(int fd);
 
-    ANDROID_API void setTextureAtlas(const sp<GraphicBuffer>& buffer, int64_t* map, size_t size);
     ANDROID_API void setProcessStatsBuffer(int fd);
     ANDROID_API int getRenderThreadTid();
 
diff --git a/libs/hwui/tests/common/TestUtils.h b/libs/hwui/tests/common/TestUtils.h
index 78e9bc4..51c0a05 100644
--- a/libs/hwui/tests/common/TestUtils.h
+++ b/libs/hwui/tests/common/TestUtils.h
@@ -124,8 +124,9 @@
     static SkBitmap createSkBitmap(int width, int height,
             SkColorType colorType = kN32_SkColorType) {
         SkBitmap bitmap;
+        sk_sp<SkColorSpace> colorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
         SkImageInfo info = SkImageInfo::Make(width, height,
-                colorType, kPremul_SkAlphaType);
+                colorType, kPremul_SkAlphaType, colorSpace);
         bitmap.setInfo(info);
         bitmap.allocPixels(info);
         return bitmap;
diff --git a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
index a30ada0..5cab04d 100644
--- a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
+++ b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
@@ -18,6 +18,7 @@
 
 #include <gtest/gtest.h>
 #include <SkColorMatrixFilter.h>
+#include <SkColorSpace.h>
 #include <SkImagePriv.h>
 #include <SkShader.h>
 
@@ -82,3 +83,9 @@
     paint.setXfermodeMode(SkXfermode::kOverlay_Mode);
     ASSERT_EQ(expected, paint.getXfermode());
 }
+
+TEST(SkiaBehavior, srgbColorSpaceIsSingleton) {
+    sk_sp<SkColorSpace> sRGB1 = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
+    sk_sp<SkColorSpace> sRGB2 = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
+    ASSERT_EQ(sRGB1.get(), sRGB2.get());
+}
diff --git a/libs/hwui/tests/unit/VectorDrawableTests.cpp b/libs/hwui/tests/unit/VectorDrawableTests.cpp
index 83b485f..8e0d3ee 100644
--- a/libs/hwui/tests/unit/VectorDrawableTests.cpp
+++ b/libs/hwui/tests/unit/VectorDrawableTests.cpp
@@ -426,5 +426,49 @@
     EXPECT_EQ(1.0f, properties->getPivotY());
 
 }
+
+static SkShader* createShader(bool* isDestroyed) {
+    class TestShader : public SkShader {
+    public:
+        TestShader(bool* isDestroyed) : SkShader(), mDestroyed(isDestroyed) {
+        }
+        ~TestShader() {
+            *mDestroyed = true;
+        }
+
+        Factory getFactory() const override { return nullptr; }
+    private:
+        bool* mDestroyed;
+    };
+    return new TestShader(isDestroyed);
+}
+
+TEST(VectorDrawable, drawPathWithoutIncrementingShaderRefCount) {
+    VectorDrawable::FullPath path("m1 1", 4);
+    SkBitmap bitmap;
+    SkImageInfo info = SkImageInfo::Make(5, 5, kN32_SkColorType, kPremul_SkAlphaType);
+    bitmap.setInfo(info);
+    bitmap.allocPixels(info);
+    SkCanvas canvas(bitmap);
+
+    bool shaderIsDestroyed = false;
+
+    // Initial ref count is 1
+    SkShader* shader = createShader(&shaderIsDestroyed);
+
+    // Setting the fill gradient increments the ref count of the shader by 1
+    path.mutateStagingProperties()->setFillGradient(shader);
+    path.draw(&canvas, SkMatrix::I(), 1.0f, 1.0f, true);
+    // Resetting the fill gradient decrements the ref count of the shader by 1
+    path.mutateStagingProperties()->setFillGradient(nullptr);
+
+    // Expect ref count to be 1 again, i.e. nothing else to have a ref to the shader now. Unref()
+    // again should bring the ref count to zero and consequently trigger detor.
+    shader->unref();
+
+    // Verify that detor is called.
+    EXPECT_TRUE(shaderIsDestroyed);
+}
+
 }; // namespace uirenderer
 }; // namespace android
diff --git a/libs/hwui/utils/Color.h b/libs/hwui/utils/Color.h
index b5157f4..f9cc46d1 100644
--- a/libs/hwui/utils/Color.h
+++ b/libs/hwui/utils/Color.h
@@ -16,6 +16,8 @@
 #ifndef COLOR_H
 #define COLOR_H
 
+#include <math.h>
+
 #include <SkColor.h>
 
 namespace android {
@@ -80,6 +82,42 @@
     };
     static constexpr int BrightColorsCount = sizeof(BrightColors) / sizeof(Color::Color);
 
+    // Opto-electronic conversion function for the sRGB color space
+    // Takes a gamma-encoded sRGB value and converts it to a linear sRGB value
+    static constexpr float OECF_sRGB(float linear) {
+        // IEC 61966-2-1:1999
+        return linear <= 0.0031308f ?
+                linear * 12.92f : (powf(linear, 1.0f / 2.4f) * 1.055f) - 0.055f;
+    }
+
+    // Opto-electronic conversion function for the sRGB color space
+    // Takes a gamma-encoded sRGB value and converts it to a linear sRGB value
+    // This function returns the input unmodified if linear blending is not enabled
+    static constexpr float OECF(float linear) {
+#ifdef ANDROID_ENABLE_LINEAR_BLENDING
+        return OECF_sRGB(linear);
+#else
+        return linear;
+#endif
+    }
+
+    // Electro-optical conversion function for the sRGB color space
+    // Takes a linear sRGB value and converts it to a gamma-encoded sRGB value
+    static constexpr float EOCF_sRGB(float srgb) {
+        // IEC 61966-2-1:1999
+        return srgb <= 0.04045f ? srgb / 12.92f : powf((srgb + 0.055f) / 1.055f, 2.4f);
+    }
+
+    // Electro-optical conversion function for the sRGB color space
+    // Takes a linear sRGB value and converts it to a gamma-encoded sRGB value
+    // This function returns the input unmodified if linear blending is not enabled
+    static constexpr float EOCF(float srgb) {
+#ifdef ANDROID_ENABLE_LINEAR_BLENDING
+        return EOCF_sRGB(srgb);
+#else
+        return srgb;
+#endif
+    }
 } /* namespace uirenderer */
 } /* namespace android */
 
diff --git a/libs/hwui/utils/TestWindowContext.cpp b/libs/hwui/utils/TestWindowContext.cpp
index b879f78..624d207 100644
--- a/libs/hwui/utils/TestWindowContext.cpp
+++ b/libs/hwui/utils/TestWindowContext.cpp
@@ -110,9 +110,10 @@
     }
 
     bool capturePixels(SkBitmap* bmp) {
+        sk_sp<SkColorSpace> colorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
         SkImageInfo destinationConfig =
             SkImageInfo::Make(mSize.width(), mSize.height(),
-                              kRGBA_8888_SkColorType, kPremul_SkAlphaType);
+                              kRGBA_8888_SkColorType, kPremul_SkAlphaType, colorSpace);
         bmp->allocPixels(destinationConfig);
         android_memset32((uint32_t*) bmp->getPixels(), SK_ColorRED,
                          mSize.width() * mSize.height() * 4);
diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java
index 8ae6e6b..754fe45 100644
--- a/media/java/android/media/Ringtone.java
+++ b/media/java/android/media/Ringtone.java
@@ -371,6 +371,7 @@
 
     private void destroyLocalPlayer() {
         if (mLocalPlayer != null) {
+            mLocalPlayer.setOnCompletionListener(null);
             mLocalPlayer.reset();
             mLocalPlayer.release();
             mLocalPlayer = null;
@@ -467,11 +468,14 @@
     }
 
     class MyOnCompletionListener implements MediaPlayer.OnCompletionListener {
-        public void onCompletion(MediaPlayer mp)
-        {
+        @Override
+        public void onCompletion(MediaPlayer mp) {
             synchronized (sActiveRingtones) {
                 sActiveRingtones.remove(Ringtone.this);
             }
+            if (mLocalPlayer != null) {
+                mLocalPlayer.setOnCompletionListener(null);
+            }
         }
     }
 }
diff --git a/packages/Keyguard/src/com/android/keyguard/LatencyTracker.java b/packages/Keyguard/src/com/android/keyguard/LatencyTracker.java
index 4b4cd86..cee0afc 100644
--- a/packages/Keyguard/src/com/android/keyguard/LatencyTracker.java
+++ b/packages/Keyguard/src/com/android/keyguard/LatencyTracker.java
@@ -141,6 +141,7 @@
         if (startRtc == -1) {
             return;
         }
+        mStartRtc.delete(action);
         Trace.asyncTraceEnd(Trace.TRACE_TAG_APP, NAMES[action], 0);
         long duration = endRtc - startRtc;
         Log.i(TAG, "action=" + action + " latency=" + duration);
diff --git a/packages/MtpDocumentsProvider/perf_tests/src/com/android/mtp/AppFuseTest.java b/packages/MtpDocumentsProvider/perf_tests/src/com/android/mtp/AppFusePerfTest.java
similarity index 98%
rename from packages/MtpDocumentsProvider/perf_tests/src/com/android/mtp/AppFuseTest.java
rename to packages/MtpDocumentsProvider/perf_tests/src/com/android/mtp/AppFusePerfTest.java
index a3e2e6b..0762571 100644
--- a/packages/MtpDocumentsProvider/perf_tests/src/com/android/mtp/AppFuseTest.java
+++ b/packages/MtpDocumentsProvider/perf_tests/src/com/android/mtp/AppFusePerfTest.java
@@ -35,10 +35,10 @@
 import org.junit.Test;
 
 @RunWith(JUnit4.class)
-public class AppFuseTest {
+public class AppFusePerfTest {
     @Test
     @LargeTest
-    public void testPerfReadWriteFile() throws IOException {
+    public void testReadWriteFile() throws IOException {
         final Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
         final StorageManager storageManager = context.getSystemService(StorageManager.class);
         final int INODE = 10;
diff --git a/packages/SettingsLib/res/layout/restricted_switch_preference.xml b/packages/SettingsLib/res/layout/restricted_switch_preference.xml
index 89dc10b..bb1d906 100644
--- a/packages/SettingsLib/res/layout/restricted_switch_preference.xml
+++ b/packages/SettingsLib/res/layout/restricted_switch_preference.xml
@@ -20,7 +20,7 @@
     android:gravity="center_vertical"
     android:paddingStart="?android:attr/listPreferredItemPaddingStart"
     android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:background="?android:attr/activatedBackgroundIndicator"
+    android:background="?android:attr/selectableItemBackground"
     android:clipToPadding="false">
 
     <LinearLayout
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 1a1aa57..972fc73 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -582,11 +582,6 @@
     <!-- UI debug setting: force right to left layout summary [CHAR LIMIT=100] -->
     <string name="force_rtl_layout_all_locales_summary">Force screen layout direction to RTL for all locales</string>
 
-    <!-- UI debug setting: show how CPU is being used? [CHAR LIMIT=25] -->
-    <string name="show_cpu_usage">Show CPU usage</string>
-    <!-- UI debug setting: show cpu usage summary [CHAR LIMIT=50] -->
-    <string name="show_cpu_usage_summary">Screen overlay showing current CPU usage</string>
-
     <!-- UI debug setting: force hardware acceleration to render apps [CHAR LIMIT=25] -->
     <string name="force_hw_ui">Force GPU rendering</string>
     <!-- UI debug setting: force hardware acceleration summary [CHAR LIMIT=50] -->
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 7338a9c..c1a1f84 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -1483,7 +1483,6 @@
                             Settings.Global.CALL_AUTO_RETRY,
                             Settings.Global.DEBUG_APP,
                             Settings.Global.WAIT_FOR_DEBUGGER,
-                            Settings.Global.SHOW_PROCESSES,
                             Settings.Global.ALWAYS_FINISH_ACTIVITIES,
                     };
                     String[] secureToGlobal = {
diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
index dde71eb..b4bfb01 100644
--- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
+++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
@@ -201,7 +201,12 @@
     @After
     public void tearDown() throws Exception {
         Log.i(TAG, getName() + ".tearDown()");
-        cancelExistingNotifications();
+        try {
+            cancelExistingNotifications();
+        } finally {
+            // Collapses just in case, so a failure here does not compromise tests on other classes.
+            mUiBot.collapseStatusBar();
+        }
     }
 
     @Test
@@ -362,7 +367,7 @@
         detailsUi.assertName(NAME);  // Sanity check
 
         cancelFromNotification();
-        mUiBot.closeNotifications();
+        mUiBot.collapseStatusBar();
 
         assertDetailsUiClosed();
         assertServiceNotRunning();
diff --git a/packages/Shell/tests/src/com/android/shell/UiBot.java b/packages/Shell/tests/src/com/android/shell/UiBot.java
index deab7da..e839765 100644
--- a/packages/Shell/tests/src/com/android/shell/UiBot.java
+++ b/packages/Shell/tests/src/com/android/shell/UiBot.java
@@ -62,7 +62,7 @@
         return getObject(text);
     }
 
-    public void closeNotifications() throws Exception {
+    public void collapseStatusBar() throws Exception {
         // TODO: mDevice should provide such method..
         StatusBarManager sbm =
                 (StatusBarManager) mInstrumentation.getContext().getSystemService("statusbar");
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 31844c0..02518f2 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -219,19 +219,10 @@
             </intent-filter>
         </receiver>
 
-        <service android:name=".LoadAverageService"
-                android:exported="true" />
-
         <service android:name=".ImageWallpaper"
                 android:permission="android.permission.BIND_WALLPAPER"
                 android:exported="true" />
 
-        <receiver android:name=".BootReceiver" androidprv:systemUserOnly="true">
-            <intent-filter android:priority="1000">
-                <action android:name="android.intent.action.BOOT_COMPLETED" />
-            </intent-filter>
-        </receiver>
-
         <activity android:name=".tuner.TunerActivity"
                   android:enabled="false"
                   android:icon="@drawable/tuner"
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSContainer.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSContainer.java
index 3270587..a616369 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSContainer.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSContainer.java
@@ -31,7 +31,7 @@
 
     // This should be incremented any time this class or ActivityStarter or BaseStatusBarHeader
     // change in incompatible ways.
-    public static final int VERSION = 1;
+    public static final int VERSION = 2;
 
     public QSContainer(@NonNull Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
@@ -40,6 +40,7 @@
     public abstract void setPanelView(HeightListener notificationPanelView);
     public abstract BaseStatusBarHeader getHeader();
 
+    public abstract void hideImmediately();
     public abstract int getQsMinExpansionHeight();
     public abstract int getDesiredHeight();
     public abstract void setHeightOverride(int desiredHeight);
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 3f485c3..81f932e 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -755,10 +755,6 @@
     <string name="quick_settings_work_mode_label">Work mode</string>
     <!-- QuickSettings: Label for the toggle to activate Night display (renamed "Night Light" with title caps). [CHAR LIMIT=20] -->
     <string name="quick_settings_night_display_label">Night Light</string>
-    <!-- QuickSettings: Summary for the toggle to deactivate Night display when it's on (renamed "Night Light" with title caps). [CHAR LIMIT=NONE] -->
-    <string name="quick_settings_night_display_summary_on">Night Light on, tap to turn off</string>
-    <!-- QuickSettings: Label for the toggle to activate Night display when it's off (renamed "Night Light" with title caps). [CHAR LIMIT=NONE] -->
-    <string name="quick_settings_night_display_summary_off">Night Light off, tap to turn on</string>
 
     <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] -->
     <string name="recents_empty_message">No recent items</string>
diff --git a/packages/SystemUI/src/com/android/systemui/BootReceiver.java b/packages/SystemUI/src/com/android/systemui/BootReceiver.java
deleted file mode 100644
index 8e24eeb..0000000
--- a/packages/SystemUI/src/com/android/systemui/BootReceiver.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2011 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.systemui;
-
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-import android.util.Log;
-
-/**
- * Performs a number of miscellaneous, non-system-critical actions
- * after the system has finished booting.
- */
-public class BootReceiver extends BroadcastReceiver {
-    private static final String TAG = "SystemUIBootReceiver";
-
-    @Override
-    public void onReceive(final Context context, Intent intent) {
-        try {
-            // Start the load average overlay, if activated
-            ContentResolver res = context.getContentResolver();
-            if (Settings.Global.getInt(res, Settings.Global.SHOW_PROCESSES, 0) != 0) {
-                Intent loadavg = new Intent(context, com.android.systemui.LoadAverageService.class);
-                context.startService(loadavg);
-            }
-        } catch (Exception e) {
-            Log.e(TAG, "Can't start load average service", e);
-        }
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/LoadAverageService.java b/packages/SystemUI/src/com/android/systemui/LoadAverageService.java
deleted file mode 100644
index 59ffe03..0000000
--- a/packages/SystemUI/src/com/android/systemui/LoadAverageService.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (C) 2007 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.systemui;
-
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.PixelFormat;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.view.Gravity;
-import android.view.View;
-import android.view.WindowManager;
-
-import com.android.internal.os.ProcessCpuTracker;
-
-public class LoadAverageService extends Service {
-    private View mView;
-
-    private static final class CpuTracker extends ProcessCpuTracker {
-        String mLoadText;
-        int mLoadWidth;
-
-        private final Paint mPaint;
-
-        CpuTracker(Paint paint) {
-            super(false);
-            mPaint = paint;
-        }
-
-        @Override
-        public void onLoadChanged(float load1, float load5, float load15) {
-            mLoadText = load1 + " / " + load5 + " / " + load15;
-            mLoadWidth = (int)mPaint.measureText(mLoadText);
-        }
-
-        @Override
-        public int onMeasureProcessName(String name) {
-            return (int)mPaint.measureText(name);
-        }
-    }
-
-    private class LoadView extends View {
-        private Handler mHandler = new Handler() {
-            @Override
-            public void handleMessage(Message msg) {
-                if (msg.what == 1) {
-                    mStats.update();
-                    updateDisplay();
-                    Message m = obtainMessage(1);
-                    sendMessageDelayed(m, 2000);
-                }
-            }
-        };
-
-        private final CpuTracker mStats;
-
-        private Paint mLoadPaint;
-        private Paint mAddedPaint;
-        private Paint mRemovedPaint;
-        private Paint mShadowPaint;
-        private Paint mShadow2Paint;
-        private Paint mIrqPaint;
-        private Paint mSystemPaint;
-        private Paint mUserPaint;
-        private float mAscent;
-        private int mFH;
-
-        private int mNeededWidth;
-        private int mNeededHeight;
-
-        LoadView(Context c) {
-            super(c);
-
-            setPadding(4, 4, 4, 4);
-            //setBackgroundResource(com.android.internal.R.drawable.load_average_background);
-
-            // Need to scale text size by density...  but we won't do it
-            // linearly, because with higher dps it is nice to squeeze the
-            // text a bit to fit more of it.  And with lower dps, trying to
-            // go much smaller will result in unreadable text.
-            int textSize = 10;
-            float density = c.getResources().getDisplayMetrics().density;
-            if (density < 1) {
-                textSize = 9;
-            } else {
-                textSize = (int)(10*density);
-                if (textSize < 10) {
-                    textSize = 10;
-                }
-            }
-            mLoadPaint = new Paint();
-            mLoadPaint.setAntiAlias(true);
-            mLoadPaint.setTextSize(textSize);
-            mLoadPaint.setARGB(255, 255, 255, 255);
-
-            mAddedPaint = new Paint();
-            mAddedPaint.setAntiAlias(true);
-            mAddedPaint.setTextSize(textSize);
-            mAddedPaint.setARGB(255, 128, 255, 128);
-
-            mRemovedPaint = new Paint();
-            mRemovedPaint.setAntiAlias(true);
-            mRemovedPaint.setStrikeThruText(true);
-            mRemovedPaint.setTextSize(textSize);
-            mRemovedPaint.setARGB(255, 255, 128, 128);
-
-            mShadowPaint = new Paint();
-            mShadowPaint.setAntiAlias(true);
-            mShadowPaint.setTextSize(textSize);
-            //mShadowPaint.setFakeBoldText(true);
-            mShadowPaint.setARGB(192, 0, 0, 0);
-            mLoadPaint.setShadowLayer(4, 0, 0, 0xff000000);
-
-            mShadow2Paint = new Paint();
-            mShadow2Paint.setAntiAlias(true);
-            mShadow2Paint.setTextSize(textSize);
-            //mShadow2Paint.setFakeBoldText(true);
-            mShadow2Paint.setARGB(192, 0, 0, 0);
-            mLoadPaint.setShadowLayer(2, 0, 0, 0xff000000);
-
-            mIrqPaint = new Paint();
-            mIrqPaint.setARGB(0x80, 0, 0, 0xff);
-            mIrqPaint.setShadowLayer(2, 0, 0, 0xff000000);
-            mSystemPaint = new Paint();
-            mSystemPaint.setARGB(0x80, 0xff, 0, 0);
-            mSystemPaint.setShadowLayer(2, 0, 0, 0xff000000);
-            mUserPaint = new Paint();
-            mUserPaint.setARGB(0x80, 0, 0xff, 0);
-            mSystemPaint.setShadowLayer(2, 0, 0, 0xff000000);
-
-            mAscent = mLoadPaint.ascent();
-            float descent = mLoadPaint.descent();
-            mFH = (int)(descent - mAscent + .5f);
-
-            mStats = new CpuTracker(mLoadPaint);
-            mStats.init();
-            updateDisplay();
-        }
-
-        @Override
-        protected void onAttachedToWindow() {
-            super.onAttachedToWindow();
-            mHandler.sendEmptyMessage(1);
-        }
-
-        @Override
-        protected void onDetachedFromWindow() {
-            super.onDetachedFromWindow();
-            mHandler.removeMessages(1);
-        }
-
-        @Override
-        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-            setMeasuredDimension(resolveSize(mNeededWidth, widthMeasureSpec),
-                    resolveSize(mNeededHeight, heightMeasureSpec));
-        }
-
-        @Override
-        public void onDraw(Canvas canvas) {
-            super.onDraw(canvas);
-            final int W = mNeededWidth;
-            final int RIGHT = getWidth()-1;
-
-            final CpuTracker stats = mStats;
-            final int userTime = stats.getLastUserTime();
-            final int systemTime = stats.getLastSystemTime();
-            final int iowaitTime = stats.getLastIoWaitTime();
-            final int irqTime = stats.getLastIrqTime();
-            final int softIrqTime = stats.getLastSoftIrqTime();
-            final int idleTime = stats.getLastIdleTime();
-
-            final int totalTime = userTime+systemTime+iowaitTime+irqTime+softIrqTime+idleTime;
-            if (totalTime == 0) {
-                return;
-            }
-            int userW = (userTime*W)/totalTime;
-            int systemW = (systemTime*W)/totalTime;
-            int irqW = ((iowaitTime+irqTime+softIrqTime)*W)/totalTime;
-
-            int paddingRight = getPaddingRight();
-            int x = RIGHT - paddingRight;
-            int top = getPaddingTop() + 2;
-            int bottom = getPaddingTop() + mFH - 2;
-
-            if (irqW > 0) {
-                canvas.drawRect(x-irqW, top, x, bottom, mIrqPaint);
-                x -= irqW;
-            }
-            if (systemW > 0) {
-                canvas.drawRect(x-systemW, top, x, bottom, mSystemPaint);
-                x -= systemW;
-            }
-            if (userW > 0) {
-                canvas.drawRect(x-userW, top, x, bottom, mUserPaint);
-                x -= userW;
-            }
-
-            int y = getPaddingTop() - (int)mAscent;
-            canvas.drawText(stats.mLoadText, RIGHT-paddingRight-stats.mLoadWidth-1,
-                    y-1, mShadowPaint);
-            canvas.drawText(stats.mLoadText, RIGHT-paddingRight-stats.mLoadWidth-1,
-                    y+1, mShadowPaint);
-            canvas.drawText(stats.mLoadText, RIGHT-paddingRight-stats.mLoadWidth+1,
-                    y-1, mShadow2Paint);
-            canvas.drawText(stats.mLoadText, RIGHT-paddingRight-stats.mLoadWidth+1,
-                    y+1, mShadow2Paint);
-            canvas.drawText(stats.mLoadText, RIGHT-paddingRight-stats.mLoadWidth,
-                    y, mLoadPaint);
-
-            int N = stats.countWorkingStats();
-            for (int i=0; i<N; i++) {
-                CpuTracker.Stats st = stats.getWorkingStats(i);
-                y += mFH;
-                top += mFH;
-                bottom += mFH;
-
-                userW = (st.rel_utime*W)/totalTime;
-                systemW = (st.rel_stime*W)/totalTime;
-                x = RIGHT - paddingRight;
-                if (systemW > 0) {
-                    canvas.drawRect(x-systemW, top, x, bottom, mSystemPaint);
-                    x -= systemW;
-                }
-                if (userW > 0) {
-                    canvas.drawRect(x-userW, top, x, bottom, mUserPaint);
-                    x -= userW;
-                }
-
-                canvas.drawText(st.name, RIGHT-paddingRight-st.nameWidth-1,
-                        y-1, mShadowPaint);
-                canvas.drawText(st.name, RIGHT-paddingRight-st.nameWidth-1,
-                        y+1, mShadowPaint);
-                canvas.drawText(st.name, RIGHT-paddingRight-st.nameWidth+1,
-                        y-1, mShadow2Paint);
-                canvas.drawText(st.name, RIGHT-paddingRight-st.nameWidth+1,
-                        y+1, mShadow2Paint);
-                Paint p = mLoadPaint;
-                if (st.added) p = mAddedPaint;
-                if (st.removed) p = mRemovedPaint;
-                canvas.drawText(st.name, RIGHT-paddingRight-st.nameWidth, y, p);
-            }
-        }
-
-        void updateDisplay() {
-            final CpuTracker stats = mStats;
-            final int NW = stats.countWorkingStats();
-
-            int maxWidth = stats.mLoadWidth;
-            for (int i=0; i<NW; i++) {
-                CpuTracker.Stats st = stats.getWorkingStats(i);
-                if (st.nameWidth > maxWidth) {
-                    maxWidth = st.nameWidth;
-                }
-            }
-
-            int neededWidth = getPaddingLeft() + getPaddingRight() + maxWidth;
-            int neededHeight = getPaddingTop() + getPaddingBottom() + (mFH*(1+NW));
-            if (neededWidth != mNeededWidth || neededHeight != mNeededHeight) {
-                mNeededWidth = neededWidth;
-                mNeededHeight = neededHeight;
-                requestLayout();
-            } else {
-                invalidate();
-            }
-        }
-    }
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        mView = new LoadView(this);
-        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            WindowManager.LayoutParams.WRAP_CONTENT,
-            WindowManager.LayoutParams.TYPE_SECURE_SYSTEM_OVERLAY,
-            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
-            WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
-            PixelFormat.TRANSLUCENT);
-        params.gravity = Gravity.END | Gravity.TOP;
-        params.setTitle("Load Average");
-        WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
-        wm.addView(mView, params);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        ((WindowManager)getSystemService(WINDOW_SERVICE)).removeView(mView);
-        mView = null;
-    }
-
-    @Override
-    public IBinder onBind(Intent intent) {
-        return null;
-    }
-
-}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
index 2173922..f345172 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
@@ -334,4 +334,10 @@
     public int getQsMinExpansionHeight() {
         return mHeader.getHeight();
     }
+
+    @Override
+    public void hideImmediately() {
+        animate().cancel();
+        setY(-mHeader.getHeight());
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
index 9415b27..c02e5ae 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
@@ -75,14 +75,12 @@
     protected void handleUpdateState(BooleanState state, Object arg) {
         final boolean isActivated = mController.isActivated();
         state.value = isActivated;
-        state.label = mContext.getString(R.string.quick_settings_night_display_label);
+        state.label = state.contentDescription =
+                mContext.getString(R.string.quick_settings_night_display_label);
         state.icon = ResourceIcon.get(isActivated ? R.drawable.ic_qs_night_display_on
                 : R.drawable.ic_qs_night_display_off);
-        state.contentDescription = mContext.getString(isActivated
-                ? R.string.quick_settings_night_display_summary_on
-                : R.string.quick_settings_night_display_summary_off);
-        state.minimalAccessibilityClassName = state.expandedAccessibilityClassName
-                = Switch.class.getName();
+        state.minimalAccessibilityClassName = state.expandedAccessibilityClassName =
+                Switch.class.getName();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 7a1ea47..4cc7a16 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -1719,6 +1719,23 @@
                         sbn.getPackageContext(mContext),
                         contentContainerPublic, mOnClickHandler);
             }
+
+            if (contentViewLocal != null) {
+                contentViewLocal.setIsRootNamespace(true);
+                contentContainer.setContractedChild(contentViewLocal);
+            }
+            if (bigContentViewLocal != null) {
+                bigContentViewLocal.setIsRootNamespace(true);
+                contentContainer.setExpandedChild(bigContentViewLocal);
+            }
+            if (headsUpContentViewLocal != null) {
+                headsUpContentViewLocal.setIsRootNamespace(true);
+                contentContainer.setHeadsUpChild(headsUpContentViewLocal);
+            }
+            if (publicViewLocal != null) {
+                publicViewLocal.setIsRootNamespace(true);
+                contentContainerPublic.setContractedChild(publicViewLocal);
+            }
         }
         catch (RuntimeException e) {
             final String ident = sbn.getPackageName() + "/0x" + Integer.toHexString(sbn.getId());
@@ -1726,23 +1743,6 @@
             return false;
         }
 
-        if (contentViewLocal != null) {
-            contentViewLocal.setIsRootNamespace(true);
-            contentContainer.setContractedChild(contentViewLocal);
-        }
-        if (bigContentViewLocal != null) {
-            bigContentViewLocal.setIsRootNamespace(true);
-            contentContainer.setExpandedChild(bigContentViewLocal);
-        }
-        if (headsUpContentViewLocal != null) {
-            headsUpContentViewLocal.setIsRootNamespace(true);
-            contentContainer.setHeadsUpChild(headsUpContentViewLocal);
-        }
-        if (publicViewLocal != null) {
-            publicViewLocal.setIsRootNamespace(true);
-            contentContainerPublic.setContractedChild(publicViewLocal);
-        }
-
         // Extract target SDK version.
         try {
             ApplicationInfo info = pmUser.getApplicationInfo(sbn.getPackageName(), 0);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 9c1eaa6..20dddab 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -1002,8 +1002,8 @@
         mKeyguardShowing = keyguardShowing;
         mQsContainer.setKeyguardShowing(mKeyguardShowing);
 
-        if (goingToFullShade || (oldState == StatusBarState.KEYGUARD
-                && statusBarState == StatusBarState.SHADE_LOCKED)) {
+        if (oldState == StatusBarState.KEYGUARD
+                && (goingToFullShade || statusBarState == StatusBarState.SHADE_LOCKED)) {
             animateKeyguardStatusBarOut();
             long delay = mStatusBarState == StatusBarState.SHADE_LOCKED
                     ? 0 : mStatusBar.calculateGoingToFullShadeDelay();
@@ -1017,6 +1017,7 @@
             mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE);
             if (keyguardShowing && oldState != mStatusBarState) {
                 mKeyguardBottomArea.onKeyguardShowingChanged();
+                mQsContainer.hideImmediately();
             }
         }
         if (keyguardShowing) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index e3ede46..77c60fb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -264,10 +264,12 @@
             }
         }
         mOccluded = occluded;
-        mPhoneStatusBar.updateMediaMetaData(false, animate && !occluded);
+        if (mShowing) {
+            mPhoneStatusBar.updateMediaMetaData(false, animate && !occluded);
+        }
         mStatusBarWindowManager.setKeyguardOccluded(occluded);
         reset();
-        if (animate && !occluded) {
+        if (animate && !occluded && mShowing) {
             mPhoneStatusBar.animateKeyguardUnoccluding();
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index 9dc9062..4b46578 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -1057,7 +1057,7 @@
     @Override
     public int getMaxExpandHeight(ExpandableView view) {
         int maxContentHeight = view.getMaxContentHeight();
-        if (view.isSummaryWithChildren()) {
+        if (view.isSummaryWithChildren() && view.getParent() == this) {
             // Faking a measure with the group expanded to simulate how the group would look if
             // it was. Doing a calculation here would be highly non-trivial because of the
             // algorithm
@@ -1072,8 +1072,11 @@
                     row.getStatusBarNotification());
             mGroupExpandedForMeasure = false;
             row.setForceUnlocked(false);
-            int height = mCurrentStackScrollState.getViewStateForView(view).height;
-            return Math.min(height, maxContentHeight);
+            StackViewState viewState = mCurrentStackScrollState.getViewStateForView(view);
+            if (viewState != null) {
+                // The view could have been removed
+                return Math.min(viewState.height, maxContentHeight);
+            }
         }
         return maxContentHeight;
     }
@@ -2038,6 +2041,7 @@
         if (!mIsExpanded) {
             mBackgroundBounds.top = 0;
             mBackgroundBounds.bottom = 0;
+            return;
         }
         ActivatableNotificationView firstView = mFirstVisibleBackgroundChild;
         int top = 0;
diff --git a/preloaded-classes b/preloaded-classes
index 42f290e..5ddd08b 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -2077,9 +2077,6 @@
 android.view.HandlerActionQueue
 android.view.HandlerActionQueue$HandlerAction
 android.view.HardwareLayer
-android.view.IAssetAtlas
-android.view.IAssetAtlas$Stub
-android.view.IAssetAtlas$Stub$Proxy
 android.view.IGraphicsStats
 android.view.IGraphicsStats$Stub
 android.view.IGraphicsStats$Stub$Proxy
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 497eac9..8424b39 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -6057,7 +6057,11 @@
                                         // the app developer's cert, so they're different on every
                                         // device.
                                         if (signaturesMatch(sigs, pkgInfo)) {
-                                            if (pkgInfo.versionCode >= version) {
+                                            if ((pkgInfo.applicationInfo.flags
+                                                    & ApplicationInfo.FLAG_RESTORE_ANY_VERSION) != 0) {
+                                                Slog.i(TAG, "Package has restoreAnyVersion; taking data");
+                                                policy = RestorePolicy.ACCEPT;
+                                            } else if (pkgInfo.versionCode >= version) {
                                                 Slog.i(TAG, "Sig + version match; taking data");
                                                 policy = RestorePolicy.ACCEPT;
                                             } else {
@@ -7479,7 +7483,11 @@
                                         // the app developer's cert, so they're different on every
                                         // device.
                                         if (signaturesMatch(sigs, pkgInfo)) {
-                                            if (pkgInfo.versionCode >= version) {
+                                            if ((pkgInfo.applicationInfo.flags
+                                                    & ApplicationInfo.FLAG_RESTORE_ANY_VERSION) != 0) {
+                                                Slog.i(TAG, "Package has restoreAnyVersion; taking data");
+                                                policy = RestorePolicy.ACCEPT;
+                                            } else if (pkgInfo.versionCode >= version) {
                                                 Slog.i(TAG, "Sig + version match; taking data");
                                                 policy = RestorePolicy.ACCEPT;
                                             } else {
diff --git a/services/core/Android.mk b/services/core/Android.mk
index 58f2074..9efafb7 100644
--- a/services/core/Android.mk
+++ b/services/core/Android.mk
@@ -17,7 +17,12 @@
 LOCAL_AIDL_INCLUDES += \
     system/netd/server/binder
 
-LOCAL_JAVA_LIBRARIES := services.net telephony-common
+LOCAL_JAVA_LIBRARIES := \
+    services.net \
+    telephony-common \
+    android.hardware.power@1.0-java \
+    android.hardware.light@2.0-java
+
 LOCAL_STATIC_JAVA_LIBRARIES := tzdata_update
 LOCAL_PROTOC_OPTIMIZE_TYPE := nano
 
diff --git a/services/core/java/com/android/server/AssetAtlasService.java b/services/core/java/com/android/server/AssetAtlasService.java
deleted file mode 100644
index b0f6048..0000000
--- a/services/core/java/com/android/server/AssetAtlasService.java
+++ /dev/null
@@ -1,717 +0,0 @@
-/*
- * Copyright (C) 2013 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.server;
-
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.graphics.Atlas;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.PixelFormat;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
-import android.graphics.drawable.Drawable;
-import android.os.Environment;
-import android.os.RemoteException;
-import android.os.SystemProperties;
-import android.util.Log;
-import android.util.LongSparseArray;
-import android.view.GraphicBuffer;
-import android.view.IAssetAtlas;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * This service is responsible for packing preloaded bitmaps into a single
- * atlas texture. The resulting texture can be shared across processes to
- * reduce overall memory usage.
- *
- * @hide
- */
-public class AssetAtlasService extends IAssetAtlas.Stub {
-    /**
-     * Name of the <code>AssetAtlasService</code>.
-     */
-    public static final String ASSET_ATLAS_SERVICE = "assetatlas";
-
-    private static final String LOG_TAG = "AssetAtlas";
-
-    // Turns debug logs on/off. Debug logs are kept to a minimum and should
-    // remain on to diagnose issues
-    private static final boolean DEBUG_ATLAS = true;
-
-    // When set to true the content of the atlas will be saved to disk
-    // in /data/system/atlas.png. The shared GraphicBuffer may be empty
-    private static final boolean DEBUG_ATLAS_TEXTURE = false;
-
-    // Minimum size in pixels to consider for the resulting texture
-    private static final int MIN_SIZE = 512;
-    // Maximum size in pixels to consider for the resulting texture
-    private static final int MAX_SIZE = 2048;
-    // Increment in number of pixels between size variants when looking
-    // for the best texture dimensions
-    private static final int STEP = 64;
-
-    // This percentage of the total number of pixels represents the minimum
-    // number of pixels we want to be able to pack in the atlas
-    private static final float PACKING_THRESHOLD = 0.8f;
-
-    // Defines the number of int fields used to represent a single entry
-    // in the atlas map. This number defines the size of the array returned
-    // by the getMap(). See the mAtlasMap field for more information
-    private static final int ATLAS_MAP_ENTRY_FIELD_COUNT = 3;
-
-    // Specifies how our GraphicBuffer will be used. To get proper swizzling
-    // the buffer will be written to using OpenGL (from JNI) so we can leave
-    // the software flag set to "never"
-    private static final int GRAPHIC_BUFFER_USAGE = GraphicBuffer.USAGE_SW_READ_NEVER |
-            GraphicBuffer.USAGE_SW_WRITE_NEVER | GraphicBuffer.USAGE_HW_TEXTURE;
-
-    // This boolean is set to true if an atlas was successfully
-    // computed and rendered
-    private final AtomicBoolean mAtlasReady = new AtomicBoolean(false);
-
-    private final Context mContext;
-
-    // Version name of the current build, used to identify changes to assets list
-    private final String mVersionName;
-
-    // Holds the atlas' data. This buffer can be mapped to
-    // OpenGL using an EGLImage
-    private GraphicBuffer mBuffer;
-
-    // Describes how bitmaps are placed in the atlas. Each bitmap is
-    // represented by several entries in the array:
-    // long0: SkBitmap*, the native bitmap object
-    // long1: x position
-    // long2: y position
-    private long[] mAtlasMap;
-
-    /**
-     * Creates a new service. Upon creating, the service will gather the list of
-     * assets to consider for packing into the atlas and spawn a new thread to
-     * start the packing work.
-     *
-     * @param context The context giving access to preloaded resources
-     */
-    public AssetAtlasService(Context context) {
-        mContext = context;
-        mVersionName = queryVersionName(context);
-
-        Collection<Bitmap> bitmaps = new HashSet<Bitmap>(300);
-        int totalPixelCount = 0;
-
-        // We only care about drawables that hold bitmaps
-        final Resources resources = context.getResources();
-        final LongSparseArray<Drawable.ConstantState> drawables = resources.getPreloadedDrawables();
-
-        final int count = drawables.size();
-        for (int i = 0; i < count; i++) {
-            try {
-                totalPixelCount += drawables.valueAt(i).addAtlasableBitmaps(bitmaps);
-            } catch (Throwable t) {
-                Log.e("AssetAtlas", "Failed to fetch preloaded drawable state", t);
-                throw t;
-            }
-        }
-
-        ArrayList<Bitmap> sortedBitmaps = new ArrayList<Bitmap>(bitmaps);
-        // Our algorithms perform better when the bitmaps are first sorted
-        // The comparator will sort the bitmap by width first, then by height
-        Collections.sort(sortedBitmaps, new Comparator<Bitmap>() {
-            @Override
-            public int compare(Bitmap b1, Bitmap b2) {
-                if (b1.getWidth() == b2.getWidth()) {
-                    return b2.getHeight() - b1.getHeight();
-                }
-                return b2.getWidth() - b1.getWidth();
-            }
-        });
-
-        // Kick off the packing work on a worker thread
-        new Thread(new Renderer(sortedBitmaps, totalPixelCount)).start();
-    }
-
-    /**
-     * Queries the version name stored in framework's AndroidManifest.
-     * The version name can be used to identify possible changes to
-     * framework resources.
-     *
-     * @see #getBuildIdentifier(String)
-     */
-    private static String queryVersionName(Context context) {
-        try {
-            String packageName = context.getPackageName();
-            PackageInfo info = context.getPackageManager().getPackageInfo(packageName,
-                    PackageManager.MATCH_DEBUG_TRIAGED_MISSING);
-            return info.versionName;
-        } catch (PackageManager.NameNotFoundException e) {
-            Log.w(LOG_TAG, "Could not get package info", e);
-        }
-        return null;
-    }
-
-    /**
-     * Callback invoked by the server thread to indicate we can now run
-     * 3rd party code.
-     */
-    public void systemRunning() {
-    }
-
-    /**
-     * The renderer does all the work:
-     */
-    private class Renderer implements Runnable {
-        private final ArrayList<Bitmap> mBitmaps;
-        private final int mPixelCount;
-
-        Renderer(ArrayList<Bitmap> bitmaps, int pixelCount) {
-            mBitmaps = bitmaps;
-            mPixelCount = pixelCount;
-        }
-
-        /**
-         * 1. On first boot or after every update, brute-force through all the
-         *    possible atlas configurations and look for the best one (maximimize
-         *    number of packed assets and minimize texture size)
-         *    a. If a best configuration was computed, write it out to disk for
-         *       future use
-         * 2. Read best configuration from disk
-         * 3. Compute the packing using the best configuration
-         * 4. Allocate a GraphicBuffer
-         * 5. Render assets in the buffer
-         */
-        @Override
-        public void run() {
-            Configuration config = chooseConfiguration(mBitmaps, mPixelCount, mVersionName);
-            if (DEBUG_ATLAS) Log.d(LOG_TAG, "Loaded configuration: " + config);
-
-            if (config != null) {
-                mBuffer = GraphicBuffer.create(config.width, config.height,
-                        PixelFormat.RGBA_8888, GRAPHIC_BUFFER_USAGE);
-
-                if (mBuffer != null) {
-                    Atlas atlas = new Atlas(config.type, config.width, config.height, config.flags);
-                    if (renderAtlas(mBuffer, atlas, config.count)) {
-                        mAtlasReady.set(true);
-                    }
-                }
-            }
-        }
-
-        /**
-         * Renders a list of bitmaps into the atlas. The position of each bitmap
-         * was decided by the packing algorithm and will be honored by this
-         * method.
-         *
-         * @param buffer The buffer to render the atlas entries into
-         * @param atlas The atlas to pack the bitmaps into
-         * @param packCount The number of bitmaps that will be packed in the atlas
-         *
-         * @return true if the atlas was rendered, false otherwise
-         */
-        @SuppressWarnings("MismatchedReadAndWriteOfArray")
-        private boolean renderAtlas(GraphicBuffer buffer, Atlas atlas, int packCount) {
-            // Use a Source blend mode to improve performance, the target bitmap
-            // will be zero'd out so there's no need to waste time applying blending
-            final Paint paint = new Paint();
-            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
-
-            // We always render the atlas into a bitmap. This bitmap is then
-            // uploaded into the GraphicBuffer using OpenGL to swizzle the content
-            final Bitmap atlasBitmap = Bitmap.createBitmap(
-                    buffer.getWidth(), buffer.getHeight(), Bitmap.Config.ARGB_8888);
-            final Canvas canvas = new Canvas(atlasBitmap);
-
-            final Atlas.Entry entry = new Atlas.Entry();
-
-            mAtlasMap = new long[packCount * ATLAS_MAP_ENTRY_FIELD_COUNT];
-            long[] atlasMap = mAtlasMap;
-            int mapIndex = 0;
-
-            boolean result = false;
-            final long startRender = System.nanoTime();
-            final int count = mBitmaps.size();
-
-            for (int i = 0; i < count; i++) {
-                final Bitmap bitmap = mBitmaps.get(i);
-                if (atlas.pack(bitmap.getWidth(), bitmap.getHeight(), entry) != null) {
-                    // We have more bitmaps to pack than the current configuration
-                    // says, we were most likely not able to detect a change in the
-                    // list of preloaded drawables, abort and delete the configuration
-                    if (mapIndex >= mAtlasMap.length) {
-                        deleteDataFile();
-                        break;
-                    }
-
-                    canvas.save();
-                    canvas.translate(entry.x, entry.y);
-                    canvas.drawBitmap(bitmap, 0.0f, 0.0f, null);
-                    canvas.restore();
-                    atlasMap[mapIndex++] = bitmap.refSkPixelRef();
-                    atlasMap[mapIndex++] = entry.x;
-                    atlasMap[mapIndex++] = entry.y;
-                }
-            }
-
-            final long endRender = System.nanoTime();
-            releaseCanvas(canvas, atlasBitmap);
-            result = nUploadAtlas(buffer, atlasBitmap);
-            atlasBitmap.recycle();
-            final long endUpload = System.nanoTime();
-
-            if (DEBUG_ATLAS) {
-                float renderDuration = (endRender - startRender) / 1000.0f / 1000.0f;
-                float uploadDuration = (endUpload - endRender) / 1000.0f / 1000.0f;
-                Log.d(LOG_TAG, String.format("Rendered atlas in %.2fms (%.2f+%.2fms)",
-                        renderDuration + uploadDuration, renderDuration, uploadDuration));
-            }
-
-            return result;
-        }
-
-        /**
-         * Releases the canvas used to render into the buffer. Calling this method
-         * will release any resource previously acquired. If {@link #DEBUG_ATLAS_TEXTURE}
-         * is turend on, calling this method will write the content of the atlas
-         * to disk in /data/system/atlas.png for debugging.
-         */
-        private void releaseCanvas(Canvas canvas, Bitmap atlasBitmap) {
-            canvas.setBitmap(null);
-            if (DEBUG_ATLAS_TEXTURE) {
-
-                File systemDirectory = new File(Environment.getDataDirectory(), "system");
-                File dataFile = new File(systemDirectory, "atlas.png");
-
-                try {
-                    FileOutputStream out = new FileOutputStream(dataFile);
-                    atlasBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
-                    out.close();
-                } catch (FileNotFoundException e) {
-                    // Ignore
-                } catch (IOException e) {
-                    // Ignore
-                }
-            }
-        }
-    }
-
-    private static native boolean nUploadAtlas(GraphicBuffer buffer, Bitmap bitmap);
-
-    @Override
-    public boolean isCompatible(int ppid) {
-        return ppid == android.os.Process.myPpid();
-    }
-
-    @Override
-    public GraphicBuffer getBuffer() throws RemoteException {
-        return mAtlasReady.get() ? mBuffer : null;
-    }
-
-    @Override
-    public long[] getMap() throws RemoteException {
-        return mAtlasReady.get() ? mAtlasMap : null;
-    }
-
-    /**
-     * Finds the best atlas configuration to pack the list of supplied bitmaps.
-     * This method takes advantage of multi-core systems by spawning a number
-     * of threads equal to the number of available cores.
-     */
-    private static Configuration computeBestConfiguration(
-            ArrayList<Bitmap> bitmaps, int pixelCount) {
-        if (DEBUG_ATLAS) Log.d(LOG_TAG, "Computing best atlas configuration...");
-
-        long begin = System.nanoTime();
-        List<WorkerResult> results = Collections.synchronizedList(new ArrayList<WorkerResult>());
-
-        // Don't bother with an extra thread if there's only one processor
-        int cpuCount = Runtime.getRuntime().availableProcessors();
-        if (cpuCount == 1) {
-            new ComputeWorker(MIN_SIZE, MAX_SIZE, STEP, bitmaps, pixelCount, results, null).run();
-        } else {
-            int start = MIN_SIZE + (cpuCount - 1) * STEP;
-            int end = MAX_SIZE;
-            int step = STEP * cpuCount;
-
-            final CountDownLatch signal = new CountDownLatch(cpuCount);
-
-            for (int i = 0; i < cpuCount; i++, start -= STEP, end -= STEP) {
-                ComputeWorker worker = new ComputeWorker(start, end, step,
-                        bitmaps, pixelCount, results, signal);
-                new Thread(worker, "Atlas Worker #" + (i + 1)).start();
-            }
-
-            boolean isAllWorkerFinished;
-            try {
-                isAllWorkerFinished = signal.await(10, TimeUnit.SECONDS);
-            } catch (InterruptedException e) {
-                Log.w(LOG_TAG, "Could not complete configuration computation");
-                return null;
-            }
-
-            if (!isAllWorkerFinished) {
-                // We have to abort here, otherwise the async updates on "results" would crash the
-                // sort later.
-                Log.w(LOG_TAG, "Could not complete configuration computation before timeout.");
-                return null;
-            }
-        }
-
-        // Maximize the number of packed bitmaps, minimize the texture size
-        Collections.sort(results, new Comparator<WorkerResult>() {
-            @Override
-            public int compare(WorkerResult r1, WorkerResult r2) {
-                int delta = r2.count - r1.count;
-                if (delta != 0) return delta;
-                return r1.width * r1.height - r2.width * r2.height;
-            }
-        });
-
-        if (DEBUG_ATLAS) {
-            float delay = (System.nanoTime() - begin) / 1000.0f / 1000.0f / 1000.0f;
-            Log.d(LOG_TAG, String.format("Found best atlas configuration (out of %d) in %.2fs",
-                    results.size(), delay));
-        }
-
-        WorkerResult result = results.get(0);
-        return new Configuration(result.type, result.width, result.height, result.count);
-    }
-
-    /**
-     * Returns the path to the file containing the best computed
-     * atlas configuration.
-     */
-    private static File getDataFile() {
-        File systemDirectory = new File(Environment.getDataDirectory(), "system");
-        return new File(systemDirectory, "framework_atlas.config");
-    }
-
-    private static void deleteDataFile() {
-        Log.w(LOG_TAG, "Current configuration inconsistent with assets list");
-        if (!getDataFile().delete()) {
-            Log.w(LOG_TAG, "Could not delete the current configuration");
-        }
-    }
-
-    private File getFrameworkResourcesFile() {
-        return new File(mContext.getApplicationInfo().sourceDir);
-    }
-
-    /**
-     * Returns the best known atlas configuration. This method will either
-     * read the configuration from disk or start a brute-force search
-     * and save the result out to disk.
-     */
-    private Configuration chooseConfiguration(ArrayList<Bitmap> bitmaps, int pixelCount,
-            String versionName) {
-        Configuration config = null;
-
-        final File dataFile = getDataFile();
-        if (dataFile.exists()) {
-            config = readConfiguration(dataFile, versionName);
-        }
-
-        if (config == null) {
-            config = computeBestConfiguration(bitmaps, pixelCount);
-            if (config != null) writeConfiguration(config, dataFile, versionName);
-        }
-
-        return config;
-    }
-
-    /**
-     * Writes the specified atlas configuration to the specified file.
-     */
-    private void writeConfiguration(Configuration config, File file, String versionName) {
-        BufferedWriter writer = null;
-        try {
-            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
-            writer.write(getBuildIdentifier(versionName));
-            writer.newLine();
-            writer.write(config.type.toString());
-            writer.newLine();
-            writer.write(String.valueOf(config.width));
-            writer.newLine();
-            writer.write(String.valueOf(config.height));
-            writer.newLine();
-            writer.write(String.valueOf(config.count));
-            writer.newLine();
-            writer.write(String.valueOf(config.flags));
-            writer.newLine();
-        } catch (FileNotFoundException e) {
-            Log.w(LOG_TAG, "Could not write " + file, e);
-        } catch (IOException e) {
-            Log.w(LOG_TAG, "Could not write " + file, e);
-        } finally {
-            if (writer != null) {
-                try {
-                    writer.close();
-                } catch (IOException e) {
-                    // Ignore
-                }
-            }
-        }
-    }
-
-    /**
-     * Reads an atlas configuration from the specified file. This method
-     * returns null if an error occurs or if the configuration is invalid.
-     */
-    private Configuration readConfiguration(File file, String versionName) {
-        BufferedReader reader = null;
-        Configuration config = null;
-        try {
-            reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
-
-            if (checkBuildIdentifier(reader, versionName)) {
-                Atlas.Type type = Atlas.Type.valueOf(reader.readLine());
-                int width = readInt(reader, MIN_SIZE, MAX_SIZE);
-                int height = readInt(reader, MIN_SIZE, MAX_SIZE);
-                int count = readInt(reader, 0, Integer.MAX_VALUE);
-                int flags = readInt(reader, Integer.MIN_VALUE, Integer.MAX_VALUE);
-
-                config = new Configuration(type, width, height, count, flags);
-            }
-        } catch (IllegalArgumentException e) {
-            Log.w(LOG_TAG, "Invalid parameter value in " + file, e);
-        } catch (FileNotFoundException e) {
-            Log.w(LOG_TAG, "Could not read " + file, e);
-        } catch (IOException e) {
-            Log.w(LOG_TAG, "Could not read " + file, e);
-        } finally {
-            if (reader != null) {
-                try {
-                    reader.close();
-                } catch (IOException e) {
-                    // Ignore
-                }
-            }
-        }
-        return config;
-    }
-
-    private static int readInt(BufferedReader reader, int min, int max) throws IOException {
-        return Math.max(min, Math.min(max, Integer.parseInt(reader.readLine())));
-    }
-
-    /**
-     * Compares the next line in the specified buffered reader to the current
-     * build identifier. Returns whether the two values are equal.
-     *
-     * @see #getBuildIdentifier(String)
-     */
-    private boolean checkBuildIdentifier(BufferedReader reader, String versionName)
-            throws IOException {
-        String deviceBuildId = getBuildIdentifier(versionName);
-        String buildId = reader.readLine();
-        return deviceBuildId.equals(buildId);
-    }
-
-    /**
-     * Returns an identifier for the current build that can be used to detect
-     * likely changes to framework resources. The build identifier is made of
-     * several distinct values:
-     *
-     * build fingerprint/framework version name/file size of framework resources apk
-     *
-     * Only the build fingerprint should be necessary on user builds but
-     * the other values are useful to detect changes on eng builds during
-     * development.
-     *
-     * This identifier does not attempt to be exact: a new identifier does not
-     * necessarily mean the preloaded drawables have changed. It is important
-     * however that whenever the list of preloaded drawables changes, this
-     * identifier changes as well.
-     *
-     * @see #checkBuildIdentifier(java.io.BufferedReader, String)
-     */
-    private String getBuildIdentifier(String versionName) {
-        return SystemProperties.get("ro.build.fingerprint", "") + '/' + versionName + '/' +
-                String.valueOf(getFrameworkResourcesFile().length());
-    }
-
-    /**
-     * Atlas configuration. Specifies the algorithm, dimensions and flags to use.
-     */
-    private static class Configuration {
-        final Atlas.Type type;
-        final int width;
-        final int height;
-        final int count;
-        final int flags;
-
-        Configuration(Atlas.Type type, int width, int height, int count) {
-            this(type, width, height, count, Atlas.FLAG_DEFAULTS);
-        }
-
-        Configuration(Atlas.Type type, int width, int height, int count, int flags) {
-            this.type = type;
-            this.width = width;
-            this.height = height;
-            this.count = count;
-            this.flags = flags;
-        }
-
-        @Override
-        public String toString() {
-            return type.toString() + " (" + width + "x" + height + ") flags=0x" +
-                    Integer.toHexString(flags) + " count=" + count;
-        }
-    }
-
-    /**
-     * Used during the brute-force search to gather information about each
-     * variant of the packing algorithm.
-     */
-    private static class WorkerResult {
-        Atlas.Type type;
-        int width;
-        int height;
-        int count;
-
-        WorkerResult(Atlas.Type type, int width, int height, int count) {
-            this.type = type;
-            this.width = width;
-            this.height = height;
-            this.count = count;
-        }
-
-        @Override
-        public String toString() {
-            return String.format("%s %dx%d", type.toString(), width, height);
-        }
-    }
-
-    /**
-     * A compute worker will try a finite number of variations of the packing
-     * algorithms and save the results in a supplied list.
-     */
-    private static class ComputeWorker implements Runnable {
-        private final int mStart;
-        private final int mEnd;
-        private final int mStep;
-        private final List<Bitmap> mBitmaps;
-        private final List<WorkerResult> mResults;
-        private final CountDownLatch mSignal;
-        private final int mThreshold;
-
-        /**
-         * Creates a new compute worker to brute-force through a range of
-         * packing algorithms variants.
-         *
-         * @param start The minimum texture width to try
-         * @param end The maximum texture width to try
-         * @param step The number of pixels to increment the texture width by at each step
-         * @param bitmaps The list of bitmaps to pack in the atlas
-         * @param pixelCount The total number of pixels occupied by the list of bitmaps
-         * @param results The list of results in which to save the brute-force search results
-         * @param signal Latch to decrement when this worker is done, may be null
-         */
-        ComputeWorker(int start, int end, int step, List<Bitmap> bitmaps, int pixelCount,
-                List<WorkerResult> results, CountDownLatch signal) {
-            mStart = start;
-            mEnd = end;
-            mStep = step;
-            mBitmaps = bitmaps;
-            mResults = results;
-            mSignal = signal;
-
-            // Minimum number of pixels we want to be able to pack
-            int threshold = (int) (pixelCount * PACKING_THRESHOLD);
-            // Make sure we can find at least one configuration
-            while (threshold > MAX_SIZE * MAX_SIZE) {
-                threshold >>= 1;
-            }
-            mThreshold = threshold;
-        }
-
-        @Override
-        public void run() {
-            if (DEBUG_ATLAS) Log.d(LOG_TAG, "Running " + Thread.currentThread().getName());
-
-            Atlas.Entry entry = new Atlas.Entry();
-
-            for (int width = mEnd; width > mStart; width -= mStep) {
-                for (int height = MAX_SIZE; height > MIN_SIZE; height -= STEP) {
-                    // If the atlas is not big enough, skip it
-                    if (width * height <= mThreshold) continue;
-
-                    boolean packSuccess = false;
-
-                    for (Atlas.Type type : Atlas.Type.values()) {
-                        final int count = packBitmaps(type, width, height, entry);
-                        if (count > 0) {
-                            mResults.add(new WorkerResult(type, width, height, count));
-                            if (count == mBitmaps.size()) {
-                                // If we were able to pack everything let's stop here
-                                // Changing the type further won't make things better
-                                packSuccess = true;
-                                break;
-                            }
-                        }
-                    }
-
-                    // If we were not able to pack everything let's stop here
-                    // Decreasing the height further won't make things better
-                    if (!packSuccess) {
-                        break;
-                    }
-                }
-            }
-
-            if (mSignal != null) {
-                mSignal.countDown();
-            }
-        }
-
-        private int packBitmaps(Atlas.Type type, int width, int height, Atlas.Entry entry) {
-            int total = 0;
-            Atlas atlas = new Atlas(type, width, height);
-
-            final int count = mBitmaps.size();
-            for (int i = 0; i < count; i++) {
-                final Bitmap bitmap = mBitmaps.get(i);
-                if (atlas.pack(bitmap.getWidth(), bitmap.getHeight(), entry) != null) {
-                    total++;
-                }
-            }
-
-            return total;
-        }
-    }
-}
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index 8252775..5c32f50 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -98,6 +98,7 @@
 import android.content.pm.UserInfo;
 import android.content.res.Configuration;
 import android.graphics.Rect;
+import android.hardware.power.V1_0.PowerHint;
 import android.os.Binder;
 import android.os.Bundle;
 import android.os.IBinder;
@@ -1003,7 +1004,7 @@
                 curTop.task != null && mStartActivity != null &&
                 curTop.task != mStartActivity.task )) &&
                 mService.mLocalPowerManager != null) {
-            mService.mLocalPowerManager.powerHint(PowerManagerInternal.POWER_HINT_LAUNCH, 1);
+            mService.mLocalPowerManager.powerHint(PowerHint.LAUNCH, 1);
             mPowerHintSent = true;
         }
     }
@@ -1011,7 +1012,7 @@
     void sendPowerHintForLaunchEndIfNeeded() {
         // Trigger launch power hint if activity is launched
         if (mPowerHintSent && mService.mLocalPowerManager != null) {
-            mService.mLocalPowerManager.powerHint(PowerManagerInternal.POWER_HINT_LAUNCH, 0);
+            mService.mLocalPowerManager.powerHint(PowerHint.LAUNCH, 0);
             mPowerHintSent = false;
         }
     }
diff --git a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
index e7198d3..719cde2 100644
--- a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
+++ b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
@@ -134,7 +134,9 @@
 
     @Override
     // Called concurrently by multiple binder threads.
-    public synchronized void onDnsEvent(int netId, int eventType, int returnCode, int latencyMs) {
+    // This method must not block or perform long-running operations.
+    public synchronized void onDnsEvent(int netId, int eventType, int returnCode, int latencyMs,
+            String hostname, String[] ipAddresses, int ipAddressesCount, int uid) {
         maybeVerboseLog(String.format("onDnsEvent(%d, %d, %d, %d)",
                 netId, eventType, returnCode, latencyMs));
 
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 2d6bef4..72feab7 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -795,7 +795,17 @@
      *           Use {@link AuthorityInfo#UNDEFINED} to sync all authorities.
      */
     public void scheduleSync(Account requestedAccount, int userId, int reason,
-            String requestedAuthority, Bundle extras, int targetSyncState) {
+                             String requestedAuthority, Bundle extras, int targetSyncState) {
+        scheduleSync(requestedAccount, userId, reason, requestedAuthority, extras, targetSyncState,
+                0 /* min delay */);
+    }
+
+    /**
+     * @param minDelayMillis The sync can't land before this delay expires.
+     */
+    private void scheduleSync(Account requestedAccount, int userId, int reason,
+                             String requestedAuthority, Bundle extras, int targetSyncState,
+                             final long minDelayMillis) {
         final boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE);
         if (extras == null) {
             extras = new Bundle();
@@ -906,7 +916,7 @@
                                 if (result != null
                                         && result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) {
                                     scheduleSync(account.account, userId, reason, authority,
-                                            finalExtras, targetSyncState);
+                                            finalExtras, targetSyncState, minDelayMillis);
                                 }
                             }
                         ));
@@ -967,7 +977,8 @@
                     postScheduleSyncMessage(
                             new SyncOperation(account.account, account.userId,
                                     owningUid, owningPackage, reason, source,
-                                    authority, newExtras, allowParallelSyncs)
+                                    authority, newExtras, allowParallelSyncs),
+                            minDelayMillis
                     );
                 } else if (targetSyncState == AuthorityInfo.UNDEFINED
                         || targetSyncState == isSyncable) {
@@ -982,7 +993,8 @@
                     postScheduleSyncMessage(
                             new SyncOperation(account.account, account.userId,
                                     owningUid, owningPackage, reason, source,
-                                    authority, extras, allowParallelSyncs)
+                                    authority, extras, allowParallelSyncs),
+                            minDelayMillis
                     );
                 }
             }
@@ -1088,14 +1100,14 @@
     }
 
     /**
-     * Schedule sync based on local changes to a provider. Occurs within interval
-     * [LOCAL_SYNC_DELAY, 2*LOCAL_SYNC_DELAY].
+     * Schedule sync based on local changes to a provider. We wait for at least LOCAL_SYNC_DELAY
+     * ms to batch syncs.
      */
     public void scheduleLocalSync(Account account, int userId, int reason, String authority) {
         final Bundle extras = new Bundle();
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_UPLOAD, true);
         scheduleSync(account, userId, reason, authority, extras,
-                AuthorityInfo.UNDEFINED);
+                AuthorityInfo.UNDEFINED, LOCAL_SYNC_DELAY);
     }
 
     public SyncAdapterType[] getSyncAdapterTypes(int userId) {
@@ -1152,9 +1164,10 @@
         mSyncHandler.sendMessageDelayed(monitorMessage, SYNC_MONITOR_WINDOW_LENGTH_MILLIS);
     }
 
-    private void postScheduleSyncMessage(SyncOperation syncOperation) {
-        mSyncHandler.obtainMessage(mSyncHandler.MESSAGE_SCHEDULE_SYNC, syncOperation)
-                .sendToTarget();
+    private void postScheduleSyncMessage(SyncOperation syncOperation, long minDelayMillis) {
+        ScheduleSyncMessagePayload payload =
+                new ScheduleSyncMessagePayload(syncOperation, minDelayMillis);
+        mSyncHandler.obtainMessage(mSyncHandler.MESSAGE_SCHEDULE_SYNC, payload).sendToTarget();
     }
 
     /**
@@ -1194,6 +1207,16 @@
         }
     }
 
+    private static class ScheduleSyncMessagePayload {
+        final SyncOperation syncOperation;
+        final long minDelayMillis;
+
+        ScheduleSyncMessagePayload(SyncOperation syncOperation, long minDelayMillis) {
+            this.syncOperation = syncOperation;
+            this.minDelayMillis = minDelayMillis;
+        }
+    }
+
     private void clearBackoffSetting(EndPoint target) {
         Pair<Long, Long> backoff = mSyncStorageEngine.getBackoff(target);
         if (backoff != null && backoff.first == SyncStorageEngine.NOT_IN_BACKOFF_MODE &&
@@ -1262,7 +1285,7 @@
             if (!op.isPeriodic && op.target.matchesSpec(target)) {
                 count++;
                 getJobScheduler().cancel(op.jobId);
-                postScheduleSyncMessage(op);
+                postScheduleSyncMessage(op, 0 /* min delay */);
             }
         }
         if (Log.isLoggable(TAG, Log.VERBOSE)) {
@@ -2417,8 +2440,10 @@
                 mDataConnectionIsConnected = readDataConnectionState();
                 switch (msg.what) {
                     case MESSAGE_SCHEDULE_SYNC:
-                        SyncOperation op = (SyncOperation) msg.obj;
-                        scheduleSyncOperationH(op);
+                        ScheduleSyncMessagePayload syncPayload =
+                                (ScheduleSyncMessagePayload) msg.obj;
+                        SyncOperation op = syncPayload.syncOperation;
+                        scheduleSyncOperationH(op, syncPayload.minDelayMillis);
                         break;
 
                     case MESSAGE_START_SYNC:
@@ -3101,7 +3126,8 @@
                         maybeRescheduleSync(syncResult, syncOperation);
                     } else {
                         // create a normal sync instance that will respect adapter backoffs
-                        postScheduleSyncMessage(syncOperation.createOneTimeSyncOperation());
+                        postScheduleSyncMessage(syncOperation.createOneTimeSyncOperation(),
+                                0 /* min delay */);
                     }
                     historyMessage = ContentResolver.syncErrorToString(
                             syncResultToErrorNumber(syncResult));
diff --git a/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java b/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
index cca9f10..353f450 100644
--- a/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
+++ b/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
@@ -99,6 +99,7 @@
     };
     private boolean mSimNeedsEmergencyAffordance;
     private boolean mNetworkNeedsEmergencyAffordance;
+    private boolean mVoiceCapable;
 
     private void requestCellScan() {
         mHandler.obtainMessage(CELL_INFO_STATE_CHANGED).sendToTarget();
@@ -125,8 +126,8 @@
 
     private void updateEmergencyAffordanceNeeded() {
         synchronized (mLock) {
-            mEmergencyAffordanceNeeded = mSimNeedsEmergencyAffordance ||
-                    mNetworkNeedsEmergencyAffordance;
+            mEmergencyAffordanceNeeded = mVoiceCapable && (mSimNeedsEmergencyAffordance ||
+                    mNetworkNeedsEmergencyAffordance);
             Settings.Global.putInt(mContext.getContentResolver(),
                     Settings.Global.EMERGENCY_AFFORDANCE_NEEDED,
                     mEmergencyAffordanceNeeded ? 1 : 0);
@@ -157,6 +158,11 @@
     public void onBootPhase(int phase) {
         if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
             mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+            mVoiceCapable = mTelephonyManager.isVoiceCapable();
+            if (!mVoiceCapable) {
+                updateEmergencyAffordanceNeeded();
+                return;
+            }
             mSubscriptionManager = SubscriptionManager.from(mContext);
             HandlerThread thread = new HandlerThread(TAG);
             thread.start();
diff --git a/services/core/java/com/android/server/lights/Light.java b/services/core/java/com/android/server/lights/Light.java
index b18a181..0bab86b 100644
--- a/services/core/java/com/android/server/lights/Light.java
+++ b/services/core/java/com/android/server/lights/Light.java
@@ -16,25 +16,28 @@
 
 package com.android.server.lights;
 
+import android.hardware.light.V2_0.Flash;
+import android.hardware.light.V2_0.Brightness;
+
 public abstract class Light {
-    public static final int LIGHT_FLASH_NONE = 0;
-    public static final int LIGHT_FLASH_TIMED = 1;
-    public static final int LIGHT_FLASH_HARDWARE = 2;
+    public static final int LIGHT_FLASH_NONE = Flash.NONE;
+    public static final int LIGHT_FLASH_TIMED = Flash.TIMED;
+    public static final int LIGHT_FLASH_HARDWARE = Flash.HARDWARE;
 
     /**
      * Light brightness is managed by a user setting.
      */
-    public static final int BRIGHTNESS_MODE_USER = 0;
+    public static final int BRIGHTNESS_MODE_USER = Brightness.USER;
 
     /**
      * Light brightness is managed by a light sensor.
      */
-    public static final int BRIGHTNESS_MODE_SENSOR = 1;
+    public static final int BRIGHTNESS_MODE_SENSOR = Brightness.SENSOR;
 
     /**
      * Low-persistence light mode.
      */
-    public static final int BRIGHTNESS_MODE_LOW_PERSISTENCE = 2;
+    public static final int BRIGHTNESS_MODE_LOW_PERSISTENCE = Brightness.LOW_PERSISTENCE;
 
     public abstract void setBrightness(int brightness);
     public abstract void setBrightness(int brightness, int brightnessMode);
diff --git a/services/core/java/com/android/server/lights/LightsManager.java b/services/core/java/com/android/server/lights/LightsManager.java
index 2f20509..be20a44 100644
--- a/services/core/java/com/android/server/lights/LightsManager.java
+++ b/services/core/java/com/android/server/lights/LightsManager.java
@@ -16,16 +16,18 @@
 
 package com.android.server.lights;
 
+import android.hardware.light.V2_0.Type;
+
 public abstract class LightsManager {
-    public static final int LIGHT_ID_BACKLIGHT = 0;
-    public static final int LIGHT_ID_KEYBOARD = 1;
-    public static final int LIGHT_ID_BUTTONS = 2;
-    public static final int LIGHT_ID_BATTERY = 3;
-    public static final int LIGHT_ID_NOTIFICATIONS = 4;
-    public static final int LIGHT_ID_ATTENTION = 5;
-    public static final int LIGHT_ID_BLUETOOTH = 6;
-    public static final int LIGHT_ID_WIFI = 7;
-    public static final int LIGHT_ID_COUNT = 8;
+    public static final int LIGHT_ID_BACKLIGHT = Type.BACKLIGHT;
+    public static final int LIGHT_ID_KEYBOARD = Type.KEYBOARD;
+    public static final int LIGHT_ID_BUTTONS = Type.BUTTONS;
+    public static final int LIGHT_ID_BATTERY = Type.BATTERY;
+    public static final int LIGHT_ID_NOTIFICATIONS = Type.NOTIFICATIONS;
+    public static final int LIGHT_ID_ATTENTION = Type.ATTENTION;
+    public static final int LIGHT_ID_BLUETOOTH = Type.BLUETOOTH;
+    public static final int LIGHT_ID_WIFI = Type.WIFI;
+    public static final int LIGHT_ID_COUNT = Type.COUNT;
 
     public abstract Light getLight(int id);
 }
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
index ca64817..bba0a50 100644
--- a/services/core/java/com/android/server/lights/LightsService.java
+++ b/services/core/java/com/android/server/lights/LightsService.java
@@ -133,7 +133,7 @@
                 Trace.traceBegin(Trace.TRACE_TAG_POWER, "setLight(" + mId + ", 0x"
                         + Integer.toHexString(color) + ")");
                 try {
-                    setLight_native(mNativePointer, mId, color, mode, onMS, offMS, brightnessMode);
+                    setLight_native(mId, color, mode, onMS, offMS, brightnessMode);
                 } finally {
                     Trace.traceEnd(Trace.TRACE_TAG_POWER);
                 }
@@ -155,8 +155,6 @@
     public LightsService(Context context) {
         super(context);
 
-        mNativePointer = init_native();
-
         for (int i = 0; i < LightsManager.LIGHT_ID_COUNT; i++) {
             mLights[i] = new LightImpl(i);
         }
@@ -217,7 +215,7 @@
     private final LightsManager mService = new LightsManager() {
         @Override
         public Light getLight(int id) {
-            if (id < LIGHT_ID_COUNT) {
+            if (0 <= id && id < LIGHT_ID_COUNT) {
                 return mLights[id];
             } else {
                 return null;
@@ -225,12 +223,6 @@
         }
     };
 
-    @Override
-    protected void finalize() throws Throwable {
-        finalize_native(mNativePointer);
-        super.finalize();
-    }
-
     private Handler mH = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -239,11 +231,6 @@
         }
     };
 
-    private static native long init_native();
-    private static native void finalize_native(long ptr);
-
-    static native void setLight_native(long ptr, int light, int color, int mode,
+    static native void setLight_native(int light, int color, int mode,
             int onMS, int offMS, int brightnessMode);
-
-    private long mNativePointer;
 }
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 0c7c8aa..4d72d8e 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -3641,7 +3641,7 @@
                 if (pkg != null && !r.sbn.getPackageName().equals(pkg)) {
                     continue;
                 }
-                if (channelId == null || !channelId.equals(r.getChannel().getId())) {
+                if (channelId != null && !channelId.equals(r.getChannel().getId())) {
                     continue;
                 }
                 if (canceledNotifications == null) {
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index c9ef0d7..c1dd24a 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -8430,7 +8430,7 @@
             }
         } else {
             // Modify state for the given package setting
-            commitPackageSettings(pkg, pkgSetting, user, policyFlags,
+            commitPackageSettings(pkg, pkgSetting, user, scanFlags,
                     (policyFlags & PackageParser.PARSE_CHATTY) != 0 /*chatty*/);
         }
         return pkg;
diff --git a/services/core/java/com/android/server/policy/BurnInProtectionHelper.java b/services/core/java/com/android/server/policy/BurnInProtectionHelper.java
index e6ec6a6..92729dc 100644
--- a/services/core/java/com/android/server/policy/BurnInProtectionHelper.java
+++ b/services/core/java/com/android/server/policy/BurnInProtectionHelper.java
@@ -43,7 +43,10 @@
     // Default value when max burnin radius is not set.
     public static final int BURN_IN_MAX_RADIUS_DEFAULT = -1;
 
-    private static final long BURNIN_PROTECTION_WAKEUP_INTERVAL_MS = TimeUnit.MINUTES.toMillis(1);
+    private static final long BURNIN_PROTECTION_FIRST_WAKEUP_INTERVAL_MS =
+            TimeUnit.MINUTES.toMillis(1);
+    private static final long BURNIN_PROTECTION_SUBSEQUENT_WAKEUP_INTERVAL_MS =
+            TimeUnit.MINUTES.toMillis(2);
     private static final long BURNIN_PROTECTION_MINIMAL_INTERVAL_MS = TimeUnit.SECONDS.toMillis(10);
 
     private static final boolean DEBUG = false;
@@ -138,6 +141,9 @@
             // We don't want to adjust offsets immediately after the device goes into ambient mode.
             // Instead, we want to wait until it's more likely that the user is not observing the
             // screen anymore.
+            final long interval = mFirstUpdate
+                ? BURNIN_PROTECTION_FIRST_WAKEUP_INTERVAL_MS
+                : BURNIN_PROTECTION_SUBSEQUENT_WAKEUP_INTERVAL_MS;
             if (mFirstUpdate) {
                 mFirstUpdate = false;
             } else {
@@ -156,8 +162,7 @@
             // Next adjustment at least ten seconds in the future.
             long nextWall = nowWall + BURNIN_PROTECTION_MINIMAL_INTERVAL_MS;
             // And aligned to the minute.
-            nextWall = nextWall - nextWall % BURNIN_PROTECTION_WAKEUP_INTERVAL_MS
-                    + BURNIN_PROTECTION_WAKEUP_INTERVAL_MS;
+            nextWall = (nextWall - (nextWall % interval)) + interval;
             // Use elapsed real time that is adjusted to full minute on wall clock.
             final long nextElapsed = nowElapsed + (nextWall - nowWall);
             if (DEBUG) {
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 30d065a..1c00cc3 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -72,6 +72,7 @@
 import android.hardware.hdmi.HdmiPlaybackClient;
 import android.hardware.hdmi.HdmiPlaybackClient.OneTouchPlayCallback;
 import android.hardware.input.InputManagerInternal;
+import android.hardware.power.V1_0.PowerHint;
 import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.media.AudioSystem;
@@ -177,7 +178,6 @@
     static final boolean DEBUG_STARTING_WINDOW = false;
     static final boolean DEBUG_WAKEUP = false;
     static final boolean SHOW_STARTING_ANIMATIONS = true;
-    static final boolean SHOW_PROCESSES_ON_ALT_MENU = false;
 
     // Whether to allow dock apps with METADATA_DOCK_HOME to temporarily take over the Home key.
     // No longer recommended for desk docks;
@@ -908,7 +908,7 @@
             @Override
             public void run() {
                 // send interaction hint to improve redraw performance
-                mPowerManagerInternal.powerHint(PowerManagerInternal.POWER_HINT_INTERACTION, 0);
+                mPowerManagerInternal.powerHint(PowerHint.INTERACTION, 0);
                 updateRotation(false);
             }
         };
@@ -1839,7 +1839,7 @@
                     public void onFling(int duration) {
                         if (mPowerManagerInternal != null) {
                             mPowerManagerInternal.powerHint(
-                                    PowerManagerInternal.POWER_HINT_INTERACTION, duration);
+                                    PowerHint.INTERACTION, duration);
                         }
                     }
                     @Override
@@ -3277,21 +3277,6 @@
                     mContext.sendOrderedBroadcastAsUser(intent, UserHandle.CURRENT,
                             null, null, null, 0, null, null);
                     return -1;
-                } else if (SHOW_PROCESSES_ON_ALT_MENU &&
-                        (metaState & KeyEvent.META_ALT_ON) == KeyEvent.META_ALT_ON) {
-                    Intent service = new Intent();
-                    service.setClassName(mContext, "com.android.server.LoadAverageService");
-                    ContentResolver res = mContext.getContentResolver();
-                    boolean shown = Settings.Global.getInt(
-                            res, Settings.Global.SHOW_PROCESSES, 0) != 0;
-                    if (!shown) {
-                        mContext.startService(service);
-                    } else {
-                        mContext.stopService(service);
-                    }
-                    Settings.Global.putInt(
-                            res, Settings.Global.SHOW_PROCESSES, shown ? 0 : 1);
-                    return -1;
                 }
             }
         } else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
@@ -5499,6 +5484,10 @@
             mStatusBar.getAttrs().privateFlags &= ~PRIVATE_FLAG_KEYGUARD;
             mStatusBar.getAttrs().flags &= ~FLAG_SHOW_WALLPAPER;
             return true;
+        } else if (wasOccluded != isOccluded) {
+            mKeyguardOccluded = isOccluded;
+            mKeyguardDelegate.setOccluded(isOccluded, false /* animate */);
+            return false;
         } else {
             return false;
         }
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 7576cddad..706828b 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -31,6 +31,7 @@
 import android.hardware.SystemSensorManager;
 import android.hardware.display.DisplayManagerInternal;
 import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest;
+import android.hardware.power.V1_0.PowerHint;
 import android.net.Uri;
 import android.os.BatteryManager;
 import android.os.BatteryManagerInternal;
@@ -84,7 +85,6 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 
-import static android.os.PowerManagerInternal.POWER_HINT_INTERACTION;
 import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP;
 import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;
 import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING;
@@ -163,10 +163,6 @@
     // How long a partial wake lock must be held until we consider it a long wake lock.
     static final long MIN_LONG_WAKE_CHECK_INTERVAL = 60*1000;
 
-    // Power hints defined in hardware/libhardware/include/hardware/power.h.
-    private static final int POWER_HINT_LOW_POWER = 5;
-    private static final int POWER_HINT_VR_MODE = 7;
-
     // Power features defined in hardware/libhardware/include/hardware/power.h.
     private static final int POWER_FEATURE_DOUBLE_TAP_TO_WAKE = 1;
 
@@ -826,7 +822,7 @@
 
         if (mLowPowerModeEnabled != lowPowerModeEnabled) {
             mLowPowerModeEnabled = lowPowerModeEnabled;
-            powerHintInternal(POWER_HINT_LOW_POWER, lowPowerModeEnabled ? 1 : 0);
+            powerHintInternal(PowerHint.LOW_POWER, lowPowerModeEnabled ? 1 : 0);
             postAfterBootCompleted(new Runnable() {
                 @Override
                 public void run() {
@@ -1152,7 +1148,7 @@
         Trace.traceBegin(Trace.TRACE_TAG_POWER, "userActivity");
         try {
             if (eventTime > mLastInteractivePowerHintTime) {
-                powerHintInternal(POWER_HINT_INTERACTION, 0);
+                powerHintInternal(PowerHint.INTERACTION, 0);
                 mLastInteractivePowerHintTime = eventTime;
             }
 
@@ -3083,7 +3079,7 @@
     private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() {
         @Override
         public void onVrStateChanged(boolean enabled) {
-            powerHintInternal(POWER_HINT_VR_MODE, enabled ? 1 : 0);
+            powerHintInternal(PowerHint.VR_MODE, enabled ? 1 : 0);
         }
     };
 
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index e9c8bef..9b22760 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -1037,6 +1037,7 @@
             for (String filename : sPerUserFiles) {
                 new File(wallpaperDir, filename).delete();
             }
+            mUserRestorecon.remove(userId);
         }
     }
 
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 508cf24..454b025 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -158,8 +158,10 @@
     ArrayDeque<Rect> mFrozenBounds = new ArrayDeque<>();
     ArrayDeque<Configuration> mFrozenMergedConfig = new ArrayDeque<>();
 
-    AppWindowToken(WindowManagerService service, IApplicationToken token, boolean _voiceInteraction) {
-        super(service, token != null ? token.asBinder() : null, TYPE_APPLICATION, true);
+    AppWindowToken(WindowManagerService service, IApplicationToken token, boolean _voiceInteraction,
+            DisplayContent displayContent) {
+        super(service, token != null ? token.asBinder() : null, TYPE_APPLICATION, true,
+                displayContent);
         appToken = token;
         voiceInteraction = _voiceInteraction;
         mInputApplicationHandle = new InputApplicationHandle(this);
@@ -897,7 +899,7 @@
     }
 
     boolean transferStartingWindow(IBinder transferFrom) {
-        final AppWindowToken fromToken = mService.findAppWindowToken(transferFrom);
+        final AppWindowToken fromToken = getDisplayContent().getAppWindowToken(transferFrom);
         if (fromToken == null) {
             return false;
         }
@@ -1182,16 +1184,16 @@
         }
     }
 
-    int rebuildWindowListUnchecked(DisplayContent dc, int addIndex) {
-        return super.rebuildWindowList(dc, addIndex);
+    int rebuildWindowListUnchecked(int addIndex) {
+        return super.rebuildWindowList(addIndex);
     }
 
     @Override
-    int rebuildWindowList(DisplayContent dc, int addIndex) {
+    int rebuildWindowList(int addIndex) {
         if (mIsExiting && !waitingForReplacement()) {
             return addIndex;
         }
-        return rebuildWindowListUnchecked(dc, addIndex);
+        return rebuildWindowListUnchecked(addIndex);
     }
 
     @Override
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index fb37c9f..327392f 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -23,6 +23,10 @@
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.view.Surface.ROTATION_0;
+import static android.view.Surface.ROTATION_180;
+import static android.view.Surface.ROTATION_270;
+import static android.view.Surface.ROTATION_90;
 import static android.view.WindowManager.DOCKED_BOTTOM;
 import static android.view.WindowManager.DOCKED_INVALID;
 import static android.view.WindowManager.DOCKED_TOP;
@@ -48,11 +52,14 @@
 import android.annotation.NonNull;
 import android.app.ActivityManager.StackId;
 import android.content.res.Configuration;
+import android.graphics.Matrix;
 import android.graphics.Rect;
+import android.graphics.RectF;
 import android.graphics.Region;
 import android.graphics.Region.Op;
 import android.hardware.display.DisplayManagerInternal;
 import android.os.Debug;
+import android.os.IBinder;
 import android.util.DisplayMetrics;
 import android.util.Slog;
 import android.view.Display;
@@ -66,6 +73,8 @@
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 
 class DisplayContentList extends ArrayList<DisplayContent> {
@@ -87,6 +96,9 @@
      * from mDisplayWindows; */
     private final WindowList mWindows = new WindowList();
 
+    // Mapping from a token IBinder to a WindowToken object on this display.
+    private final HashMap<IBinder, WindowToken> mTokenMap = new HashMap();
+
     int mInitialDisplayWidth = 0;
     int mInitialDisplayHeight = 0;
     int mInitialDisplayDensity = 0;
@@ -122,6 +134,8 @@
     /** Save allocating when calculating rects */
     private final Rect mTmpRect = new Rect();
     private final Rect mTmpRect2 = new Rect();
+    private final RectF mTmpRectF = new RectF();
+    private final Matrix mTmpMatrix = new Matrix();
     private final Region mTmpRegion = new Region();
 
     final WindowManagerService mService;
@@ -167,6 +181,35 @@
         return mWindows;
     }
 
+    WindowToken getWindowToken(IBinder binder) {
+        return mTokenMap.get(binder);
+    }
+
+    AppWindowToken getAppWindowToken(IBinder binder) {
+        final WindowToken token = getWindowToken(binder);
+        if (token == null) {
+            return null;
+        }
+        return token.asAppWindowToken();
+    }
+
+    void setWindowToken(IBinder binder, WindowToken token) {
+        final DisplayContent dc = mService.mRoot.getWindowTokenDisplay(token);
+        if (dc != null) {
+            // We currently don't support adding a window token to the display if the display
+            // already has the binder mapped to another token. If there is a use case for supporting
+            // this moving forward we will either need to merge the WindowTokens some how or have
+            // the binder map to a list of window tokens.
+            throw new IllegalArgumentException("Can't map token=" + token + " to display=" + this
+                    + " already mapped to display=" + dc + " tokens=" + dc.mTokenMap);
+        }
+        mTokenMap.put(binder, token);
+    }
+
+    WindowToken removeWindowToken(IBinder binder) {
+        return mTokenMap.remove(binder);
+    }
+
     Display getDisplay() {
         return mDisplay;
     }
@@ -318,8 +361,7 @@
     void getLogicalDisplayRect(Rect out) {
         // Uses same calculation as in LogicalDisplay#configureDisplayInTransactionLocked.
         final int orientation = mDisplayInfo.rotation;
-        boolean rotated = (orientation == Surface.ROTATION_90
-                || orientation == Surface.ROTATION_270);
+        boolean rotated = (orientation == ROTATION_90 || orientation == ROTATION_270);
         final int physWidth = rotated ? mBaseDisplayHeight : mBaseDisplayWidth;
         final int physHeight = rotated ? mBaseDisplayWidth : mBaseDisplayHeight;
         int width = mDisplayInfo.logicalWidth;
@@ -329,6 +371,20 @@
         out.set(left, top, left + width, top + height);
     }
 
+    private void getLogicalDisplayRect(Rect out, int orientation) {
+        getLogicalDisplayRect(out);
+
+        // Rotate the Rect if needed.
+        final int currentRotation = mDisplayInfo.rotation;
+        final int rotationDelta = deltaRotation(currentRotation, orientation);
+        if (rotationDelta == ROTATION_90 || rotationDelta == ROTATION_270) {
+            createRotationMatrix(rotationDelta, mBaseDisplayWidth, mBaseDisplayHeight, mTmpMatrix);
+            mTmpRectF.set(out);
+            mTmpMatrix.mapRect(mTmpRectF);
+            mTmpRectF.round(out);
+        }
+    }
+
     void getContentRect(Rect out) {
         out.set(mContentRect);
     }
@@ -342,6 +398,7 @@
             mHomeStack = stack;
         }
         addChild(stack, onTop);
+        stack.onDisplayChanged(this);
     }
 
     void moveStack(TaskStack stack, boolean toTop) {
@@ -630,32 +687,16 @@
     }
 
     void rotateBounds(int oldRotation, int newRotation, Rect bounds) {
-        final int rotationDelta = DisplayContent.deltaRotation(oldRotation, newRotation);
-        getLogicalDisplayRect(mTmpRect);
-        switch (rotationDelta) {
-            case Surface.ROTATION_0:
-                mTmpRect2.set(bounds);
-                break;
-            case Surface.ROTATION_90:
-                mTmpRect2.top = mTmpRect.bottom - bounds.right;
-                mTmpRect2.left = bounds.top;
-                mTmpRect2.right = mTmpRect2.left + bounds.height();
-                mTmpRect2.bottom = mTmpRect2.top + bounds.width();
-                break;
-            case Surface.ROTATION_180:
-                mTmpRect2.top = mTmpRect.bottom - bounds.bottom;
-                mTmpRect2.left = mTmpRect.right - bounds.right;
-                mTmpRect2.right = mTmpRect2.left + bounds.width();
-                mTmpRect2.bottom = mTmpRect2.top + bounds.height();
-                break;
-            case Surface.ROTATION_270:
-                mTmpRect2.top = bounds.left;
-                mTmpRect2.left = mTmpRect.right - bounds.bottom;
-                mTmpRect2.right = mTmpRect2.left + bounds.height();
-                mTmpRect2.bottom = mTmpRect2.top + bounds.width();
-                break;
-        }
-        bounds.set(mTmpRect2);
+        getLogicalDisplayRect(mTmpRect, newRotation);
+
+        // Compute a transform matrix to undo the coordinate space transformation,
+        // and present the window at the same physical position it previously occupied.
+        final int deltaRotation = deltaRotation(newRotation, oldRotation);
+        createRotationMatrix(deltaRotation, mTmpRect.width(), mTmpRect.height(), mTmpMatrix);
+
+        mTmpRectF.set(bounds);
+        mTmpMatrix.mapRect(mTmpRectF);
+        mTmpRectF.round(bounds);
     }
 
     static int deltaRotation(int oldRotation, int newRotation) {
@@ -664,6 +705,35 @@
         return delta;
     }
 
+    static void createRotationMatrix(int rotation, float displayWidth, float displayHeight,
+            Matrix outMatrix) {
+        // For rotations without Z-ordering we don't need the target rectangle's position.
+        createRotationMatrix(rotation, 0 /* rectLeft */, 0 /* rectTop */, displayWidth,
+                displayHeight, outMatrix);
+    }
+
+    static void createRotationMatrix(int rotation, float rectLeft, float rectTop,
+            float displayWidth, float displayHeight, Matrix outMatrix) {
+        switch (rotation) {
+            case ROTATION_0:
+                outMatrix.reset();
+                break;
+            case ROTATION_270:
+                outMatrix.setRotate(270, 0, 0);
+                outMatrix.postTranslate(0, displayHeight);
+                outMatrix.postTranslate(rectTop, 0);
+                break;
+            case ROTATION_180:
+                outMatrix.reset();
+                break;
+            case ROTATION_90:
+                outMatrix.setRotate(90, 0, 0);
+                outMatrix.postTranslate(displayWidth, 0);
+                outMatrix.postTranslate(-rectTop, rectLeft);
+                break;
+        }
+    }
+
     public void dump(String prefix, PrintWriter pw) {
         pw.print(prefix); pw.print("Display: mDisplayId="); pw.println(mDisplayId);
         final String subPrefix = "  " + prefix;
@@ -899,7 +969,7 @@
         // position; else we need to look some more.
         if (pos != null) {
             // Move behind any windows attached to this one.
-            final WindowToken atoken = mService.mTokenMap.get(pos.mClient.asBinder());
+            final WindowToken atoken = getWindowToken(pos.mClient.asBinder());
             if (atoken != null) {
                 tokenWindowList = getTokenWindowsOnDisplay(atoken);
                 final int NC = tokenWindowList.size();
@@ -929,7 +999,7 @@
 
         if (pos != null) {
             // Move in front of any windows attached to this one.
-            final WindowToken atoken = mService.mTokenMap.get(pos.mClient.asBinder());
+            final WindowToken atoken = getWindowToken(pos.mClient.asBinder());
             if (atoken != null) {
                 final WindowState top = atoken.getTopWindow();
                 if (top != null && top.mSubLayer >= 0) {
@@ -1086,13 +1156,13 @@
             AppTokenList exitingAppTokens = mChildren.get(stackNdx).mExitingAppTokens;
             int NT = exitingAppTokens.size();
             for (int j = 0; j < NT; j++) {
-                i = exitingAppTokens.get(j).rebuildWindowListUnchecked(this, i);
+                i = exitingAppTokens.get(j).rebuildWindowListUnchecked(i);
             }
         }
 
         // And add in the still active app tokens in Z order.
         for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
-            i = mChildren.get(stackNdx).rebuildWindowList(this, i);
+            i = mChildren.get(stackNdx).rebuildWindowList(i);
         }
 
         i -= lastBelow;
@@ -1238,6 +1308,25 @@
         }
     }
 
+    void dumpTokens(PrintWriter pw, boolean dumpAll) {
+        if (mTokenMap.isEmpty()) {
+            return;
+        }
+        pw.println("  Display #" + mDisplayId);
+        final Iterator<WindowToken> it = mTokenMap.values().iterator();
+        while (it.hasNext()) {
+            final WindowToken token = it.next();
+            pw.print("  ");
+            pw.print(token);
+            if (dumpAll) {
+                pw.println(':');
+                token.dump(pw, "    ");
+            } else {
+                pw.println();
+            }
+        }
+    }
+
     static final class GetWindowOnDisplaySearchResult {
         boolean reachedToken;
         WindowState foundWindow;
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 9bd3118..3c13439 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -19,8 +19,10 @@
 import android.app.AppOpsManager;
 import android.content.res.Configuration;
 import android.graphics.Rect;
+import android.hardware.power.V1_0.PowerHint;
 import android.os.Binder;
 import android.os.Debug;
+import android.os.IBinder;
 import android.os.ParcelFileDescriptor;
 import android.os.PowerManager;
 import android.os.RemoteException;
@@ -41,9 +43,11 @@
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedList;
 
 import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
+import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
 import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
@@ -57,8 +61,11 @@
 import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
 import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
 import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
+import static com.android.server.wm.AppTransition.TRANSIT_UNSET;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_APP_TRANSITIONS;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY;
+import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS;
@@ -78,6 +85,7 @@
 import static com.android.server.wm.WindowManagerService.H.REPORT_LOSING_FOCUS;
 import static com.android.server.wm.WindowManagerService.H.SEND_NEW_CONFIGURATION;
 import static com.android.server.wm.WindowManagerService.LAYOUT_REPEAT_THRESHOLD;
+import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL;
 import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_PLACING_SURFACES;
 import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_WILL_PLACE_SURFACES;
 import static com.android.server.wm.WindowManagerService.WINDOWS_FREEZING_SCREENS_NONE;
@@ -136,6 +144,15 @@
 
     private final LinkedList<AppWindowToken> mTmpUpdateAllDrawn = new LinkedList();
 
+    private final ArrayList<WindowToken> mTmpTokensList = new ArrayList();
+
+    // Collection of binder tokens mapped to their window type we are allowed to create window
+    // tokens for but that are not current attached to any display. We need to track this here
+    // because a binder token can be added through {@link WindowManagerService#addWindowToken},
+    // but we don't know what display windows for the token will be added to until
+    // {@link WindowManagerService#addWindow} is called.
+    private final HashMap<IBinder, Integer> mUnattachedBinderTokens = new HashMap();
+
     // State for the RemoteSurfaceTrace system used in testing. If this is enabled SurfaceControl
     // instances will be replaced with an instance that writes a binary representation of all
     // commands to mSurfaceTraceFd.
@@ -178,7 +195,7 @@
         return dc;
     }
 
-    private DisplayContent getDisplayContent(int displayId) {
+    DisplayContent getDisplayContent(int displayId) {
         for (int i = mChildren.size() - 1; i >= 0; --i) {
             final DisplayContent current = mChildren.get(i);
             if (current.getDisplayId() == displayId) {
@@ -252,7 +269,6 @@
         }
 
         if (!attachedToDisplay) {
-            stack.attachDisplayContent(dc);
             dc.attachStack(stack, onTop);
         }
 
@@ -337,6 +353,202 @@
         return null;
     }
 
+    /** Return the window token associated with the input binder token on the input display */
+    WindowToken getWindowToken(IBinder binder, DisplayContent dc) {
+        final WindowToken token = dc.getWindowToken(binder);
+        if (token != null) {
+            return token;
+        }
+
+        // There is no window token mapped to the binder on the display. Create and map a window
+        // token if it is currently allowed.
+        if (!mUnattachedBinderTokens.containsKey(binder)) {
+            return null;
+        }
+
+        final int type = mUnattachedBinderTokens.get(binder);
+        return new WindowToken(mService, binder, type, true, dc);
+    }
+
+    /** Returns all window tokens mapped to the input binder. */
+    ArrayList<WindowToken> getWindowTokens(IBinder binder) {
+        mTmpTokensList.clear();
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final DisplayContent dc = mChildren.get(i);
+            final WindowToken token = dc.getWindowToken(binder);
+            if (token != null) {
+                mTmpTokensList.add(token);
+            }
+        }
+        return mTmpTokensList;
+    }
+
+    /**
+     * Returns the app window token for the input binder if it exist in the system.
+     * NOTE: Only one AppWindowToken is allowed to exist in the system for a binder token, since
+     * AppWindowToken represents an activity which can only exist on one display.
+     */
+    AppWindowToken getAppWindowToken(IBinder binder) {
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final DisplayContent dc = mChildren.get(i);
+            final AppWindowToken atoken = dc.getAppWindowToken(binder);
+            if (atoken != null) {
+                return atoken;
+            }
+        }
+        return null;
+    }
+
+    /** Returns the display object the input window token is currently mapped on. */
+    DisplayContent getWindowTokenDisplay(WindowToken token) {
+        if (token == null) {
+            return null;
+        }
+
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final DisplayContent dc = mChildren.get(i);
+            final WindowToken current = dc.getWindowToken(token.token);
+            if (current == token) {
+                return dc;
+            }
+        }
+
+        return null;
+    }
+
+    void addWindowToken(IBinder binder, int type) {
+        if (mUnattachedBinderTokens.containsKey(binder)) {
+            Slog.w(TAG_WM, "addWindowToken: Attempted to add existing binder token: " + binder);
+            return;
+        }
+
+        final ArrayList<WindowToken> tokens = getWindowTokens(binder);
+
+        if (!tokens.isEmpty()) {
+            Slog.w(TAG_WM, "addWindowToken: Attempted to add binder token: " + binder
+                    + " for already created window tokens: " + tokens);
+            return;
+        }
+
+        mUnattachedBinderTokens.put(binder, type);
+
+        // TODO(multi-display): By default we add this to the default display, but maybe we
+        // should provide an API for a token to be added to any display?
+        final WindowToken token = new WindowToken(mService, binder, type, true,
+                getDisplayContent(DEFAULT_DISPLAY));
+        if (type == TYPE_WALLPAPER) {
+            mService.mWallpaperControllerLocked.addWallpaperToken(token);
+        }
+    }
+
+    ArrayList<WindowToken> removeWindowToken(IBinder binder) {
+        mUnattachedBinderTokens.remove(binder);
+
+        mTmpTokensList.clear();
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final DisplayContent dc = mChildren.get(i);
+            final WindowToken token = dc.removeWindowToken(binder);
+            if (token != null) {
+                mTmpTokensList.add(token);
+            }
+        }
+        return mTmpTokensList;
+    }
+
+    /**
+     * Removed the mapping to the input binder for the system if it no longer as a window token
+     * associated with it on any display.
+     */
+    void removeWindowTokenIfPossible(IBinder binder) {
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final DisplayContent dc = mChildren.get(i);
+            final WindowToken token = dc.getWindowToken(binder);
+            if (token != null) {
+                return;
+            }
+        }
+
+        mUnattachedBinderTokens.remove(binder);
+    }
+
+    void removeAppToken(IBinder binder) {
+        final ArrayList<WindowToken> removedTokens = removeWindowToken(binder);
+        if (removedTokens == null || removedTokens.isEmpty()) {
+            Slog.w(TAG_WM, "removeAppToken: Attempted to remove non-existing token: " + binder);
+            return;
+        }
+
+        for (int i = removedTokens.size() - 1; i >= 0; --i) {
+            WindowToken wtoken = removedTokens.get(i);
+            AppWindowToken appToken = wtoken.asAppWindowToken();
+
+            if (appToken == null) {
+                Slog.w(TAG_WM,
+                        "Attempted to remove non-App token: " + binder + " wtoken=" + wtoken);
+                continue;
+            }
+
+            AppWindowToken startingToken = null;
+
+            if (DEBUG_APP_TRANSITIONS) Slog.v(TAG_WM, "Removing app token: " + appToken);
+
+            boolean delayed = appToken.setVisibility(null, false, TRANSIT_UNSET, true,
+                    appToken.voiceInteraction);
+
+            mService.mOpeningApps.remove(appToken);
+            appToken.waitingToShow = false;
+            if (mService.mClosingApps.contains(appToken)) {
+                delayed = true;
+            } else if (mService.mAppTransition.isTransitionSet()) {
+                mService.mClosingApps.add(appToken);
+                delayed = true;
+            }
+
+            if (DEBUG_APP_TRANSITIONS) Slog.v(TAG_WM, "Removing app " + appToken
+                    + " delayed=" + delayed
+                    + " animation=" + appToken.mAppAnimator.animation
+                    + " animating=" + appToken.mAppAnimator.animating);
+
+            if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG_WM, "removeAppToken: "
+                    + appToken + " delayed=" + delayed + " Callers=" + Debug.getCallers(4));
+
+            final TaskStack stack = appToken.mTask.mStack;
+            if (delayed && !appToken.isEmpty()) {
+                // set the token aside because it has an active animation to be finished
+                if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG_WM,
+                        "removeAppToken make exiting: " + appToken);
+                stack.mExitingAppTokens.add(appToken);
+                appToken.mIsExiting = true;
+            } else {
+                // Make sure there is no animation running on this token, so any windows associated
+                // with it will be removed as soon as their animations are complete
+                appToken.mAppAnimator.clearAnimation();
+                appToken.mAppAnimator.animating = false;
+                appToken.removeIfPossible();
+            }
+
+            appToken.removed = true;
+            if (appToken.startingData != null) {
+                startingToken = appToken;
+            }
+            appToken.stopFreezingScreen(true, true);
+            if (mService.mFocusedApp == appToken) {
+                if (DEBUG_FOCUS_LIGHT) Slog.v(TAG_WM, "Removing focused app token:" + appToken);
+                mService.mFocusedApp = null;
+                mService.updateFocusedWindowLocked(
+                        UPDATE_FOCUS_NORMAL, true /*updateInputWindows*/);
+                mService.mInputMonitor.setFocusedAppLw(null);
+            }
+
+            if (!delayed) {
+                appToken.updateReportedVisibilityLocked();
+            }
+
+            // Will only remove if startingToken non null.
+            mService.scheduleRemoveStartingWindowLocked(startingToken);
+        }
+    }
+
     // TODO: Users would have their own window containers under the display container?
     void switchUser() {
         final int count = mChildren.size();
@@ -890,7 +1102,7 @@
         if (mSustainedPerformanceModeCurrent != mSustainedPerformanceModeEnabled) {
             mSustainedPerformanceModeEnabled = mSustainedPerformanceModeCurrent;
             mService.mPowerManagerInternal.powerHint(
-                    mService.mPowerManagerInternal.POWER_HINT_SUSTAINED_PERFORMANCE_MODE,
+                    PowerHint.SUSTAINED_PERFORMANCE,
                     (mSustainedPerformanceModeEnabled ? 1 : 0));
         }
 
@@ -1360,6 +1572,13 @@
         }
     }
 
+    void dumpTokens(PrintWriter pw, boolean dumpAll) {
+        pw.println("  All tokens:");
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            mChildren.get(i).dumpTokens(pw, dumpAll);
+        }
+    }
+
     @Override
     String getName() {
         return "ROOT";
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index e98fc39..56fdc33 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -94,16 +94,16 @@
     private boolean mFillsParent = true;
 
     // Device rotation as of the last time {@link #mBounds} was set.
-    int mRotation;
+    private int mRotation;
 
     /** Density as of last time {@link #mBounds} was set. */
-    int mDensity;
+    private int mDensity;
 
     /** Support for non-zero {@link android.view.animation.Animation#getBackgroundColor()} */
-    DimLayer mAnimationBackgroundSurface;
+    private DimLayer mAnimationBackgroundSurface;
 
     /** The particular window with an Animation with non-zero background color. */
-    WindowStateAnimator mAnimationBackgroundAnimator;
+    private WindowStateAnimator mAnimationBackgroundAnimator;
 
     /** Application tokens that are exiting, but still on screen for animations. */
     final AppTokenList mExitingAppTokens = new AppTokenList();
@@ -606,12 +606,12 @@
         }
     }
 
-    void attachDisplayContent(DisplayContent displayContent) {
+    void onDisplayChanged(DisplayContent dc) {
         if (mDisplayContent != null) {
-            throw new IllegalStateException("attachDisplayContent: Already attached");
+            throw new IllegalStateException("onDisplayChanged: Already attached");
         }
 
-        mDisplayContent = displayContent;
+        mDisplayContent = dc;
         mAnimationBackgroundSurface = new DimLayer(mService, this, mDisplayContent.getDisplayId(),
                 "animation background stackId=" + mStackId);
 
@@ -625,7 +625,7 @@
             // not fullscreen. If it's fullscreen, it means that we are in the transition of
             // dismissing it, so we must not resize this stack.
             bounds = new Rect();
-            displayContent.getLogicalDisplayRect(mTmpRect);
+            dc.getLogicalDisplayRect(mTmpRect);
             mTmpRect2.setEmpty();
             if (dockedStack != null) {
                 dockedStack.getRawBounds(mTmpRect2);
@@ -638,6 +638,8 @@
         }
 
         updateDisplayInfo(bounds);
+
+        super.onDisplayChanged(dc);
     }
 
     void getStackDockedModeBoundsLocked(Rect outBounds, boolean ignoreVisibility) {
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 902f4ae..981b813 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -254,6 +254,17 @@
         }
     }
 
+    /**
+     * Notify that the display this container is on has changed.
+     * @param dc The new display this container is on.
+     */
+    void onDisplayChanged(DisplayContent dc) {
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final WindowContainer child = mChildren.get(i);
+            child.onDisplayChanged(dc);
+        }
+    }
+
     void setWaitingForDrawnIfResizingChanged() {
         for (int i = mChildren.size() - 1; i >= 0; --i) {
             final WindowContainer wc = mChildren.get(i);
@@ -472,16 +483,15 @@
 
     /**
      * Rebuilds the WindowList for the input display content.
-     * @param dc The display content to rebuild the window list for.
      * @param addIndex The index in the window list to add the next entry to.
      * @return The next index in the window list to.
      */
     // TODO: Hoping we can get rid of WindowList so this method wouldn't be needed.
-    int rebuildWindowList(DisplayContent dc, int addIndex) {
+    int rebuildWindowList(int addIndex) {
         final int count = mChildren.size();
         for (int i = 0; i < count; i++) {
             final WindowContainer wc = mChildren.get(i);
-            addIndex = wc.rebuildWindowList(dc, addIndex);
+            addIndex = wc.rebuildWindowList(addIndex);
         }
         return addIndex;
     }
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 12ad09c..226750b 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -163,7 +163,6 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 
 import static android.Manifest.permission.MANAGE_APP_TOKENS;
@@ -403,11 +402,6 @@
     final HashMap<IBinder, WindowState> mWindowMap = new HashMap<>();
 
     /**
-     * Mapping from a token IBinder to a WindowToken object.
-     */
-    final HashMap<IBinder, WindowToken> mTokenMap = new HashMap<>();
-
-    /**
      * List of window tokens that have finished starting their application,
      * and now need to have the policy remove their windows.
      */
@@ -912,7 +906,7 @@
         @Override
         public void onAppTransitionFinishedLocked(IBinder token) {
             mH.sendEmptyMessage(H.NOTIFY_APP_TRANSITION_FINISHED);
-            AppWindowToken atoken = findAppWindowToken(token);
+            final AppWindowToken atoken = mRoot.getAppWindowToken(token);
             if (atoken == null) {
                 return;
             }
@@ -1263,7 +1257,8 @@
             // excercise to find the appropriate input method target (used for animations
             // and dialog adjustments), but for purposes of Z ordering we simply wish to
             // place it above the docked divider. Unless it is already above the divider.
-            WindowState dockedDivider = w.mDisplayContent.mDividerControllerLocked.getWindow();
+            final WindowState dockedDivider =
+                    w.getDisplayContent().mDividerControllerLocked.getWindow();
             if (dockedDivider != null && dockedDivider.isVisibleLw()) {
                 int dividerIndex = windows.indexOf(dockedDivider);
                 if (dividerIndex > 0 && dividerIndex > i) {
@@ -1281,7 +1276,7 @@
         return -1;
     }
 
-    void addInputMethodWindowToListLocked(WindowState win) {
+    private void addInputMethodWindowToListLocked(WindowState win) {
         int pos = findDesiredInputMethodWindowIndexLocked(true);
         if (pos >= 0) {
             if (DEBUG_WINDOW_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v(
@@ -1535,7 +1530,8 @@
             final boolean hasParent = parentWindow != null;
             // Use existing parent window token for child windows since they go in the same token
             // as there parent window so we can apply the same policy on them.
-            WindowToken token = mTokenMap.get(hasParent ? parentWindow.mAttrs.token : attrs.token);
+            WindowToken token = mRoot.getWindowToken(
+                    hasParent ? parentWindow.mAttrs.token : attrs.token, displayContent);
             // If this is a child window, we want to apply the same type checking rules as the
             // parent window type.
             final int rootType = hasParent ? parentWindow.mAttrs.type : type;
@@ -1587,7 +1583,7 @@
                         return WindowManagerGlobal.ADD_BAD_APP_TOKEN;
                     }
                 }
-                token = new WindowToken(this, attrs.token, -1, false);
+                token = new WindowToken(this, attrs.token, -1, false, displayContent);
             } else if (rootType >= FIRST_APPLICATION_WINDOW && rootType <= LAST_APPLICATION_WINDOW) {
                 atoken = token.asAppWindowToken();
                 if (atoken == null) {
@@ -1655,11 +1651,11 @@
                 // It is not valid to use an app token with other system types; we will
                 // instead make a new token for it (as if null had been passed in for the token).
                 attrs.token = null;
-                token = new WindowToken(this, null, -1, false);
+                token = new WindowToken(this, null, -1, false, displayContent);
             }
 
             WindowState win = new WindowState(this, session, client, token, parentWindow,
-                    appOp[0], seq, attrs, viewVisibility, displayContent, session.mUid);
+                    appOp[0], seq, attrs, viewVisibility, session.mUid);
             if (win.mDeathRecipient == null) {
                 // Client has apparently died, so there is no reason to
                 // continue.
@@ -2025,7 +2021,7 @@
         // Window will already be removed from token before this post clean-up method is called.
         if (token.isEmpty()) {
             if (!token.explicit) {
-                mTokenMap.remove(token.token);
+                token.removeImmediately();
             } else if (atoken != null) {
                 // TODO: Should this be moved into AppWindowToken.removeWindow? Might go away after
                 // re-factor.
@@ -2750,14 +2746,6 @@
         return !mDisplayFrozen && mDisplayEnabled && mPolicy.isScreenOn();
     }
 
-    AppWindowToken findAppWindowToken(IBinder token) {
-        WindowToken wtoken = mTokenMap.get(token);
-        if (wtoken == null) {
-            return null;
-        }
-        return wtoken.asAppWindowToken();
-    }
-
     @Override
     public void addWindowToken(IBinder token, int type) {
         if (!checkCallingPermission(MANAGE_APP_TOKENS, "addWindowToken()")) {
@@ -2765,15 +2753,7 @@
         }
 
         synchronized(mWindowMap) {
-            WindowToken wtoken = mTokenMap.get(token);
-            if (wtoken != null) {
-                Slog.w(TAG_WM, "Attempted to add existing input method token: " + token);
-                return;
-            }
-            wtoken = new WindowToken(this, token, type, true);
-            if (type == TYPE_WALLPAPER) {
-                mWallpaperControllerLocked.addWallpaperToken(wtoken);
-            }
+            mRoot.addWindowToken(token, type);
         }
     }
 
@@ -2784,20 +2764,28 @@
         }
 
         final long origId = Binder.clearCallingIdentity();
-        synchronized(mWindowMap) {
-            final WindowToken wtoken = mTokenMap.remove(token);
-            if (wtoken != null) {
-                wtoken.setExiting();
-                if (wtoken.windowType == TYPE_WALLPAPER) {
-                    mWallpaperControllerLocked.removeWallpaperToken(wtoken);
+        try {
+            synchronized (mWindowMap) {
+                final ArrayList<WindowToken> removedTokens = mRoot.removeWindowToken(token);
+                if (removedTokens == null || removedTokens.isEmpty()) {
+                    Slog.w(TAG_WM,
+                            "removeWindowToken: Attempted to remove non-existing token: " + token);
+                    return;
                 }
 
-                mInputMonitor.updateInputWindowsLw(true /*force*/);
-            } else {
-                Slog.w(TAG_WM, "Attempted to remove non-existing token: " + token);
+                for (int i = removedTokens.size() - 1; i >= 0; --i) {
+                    final WindowToken wtoken = removedTokens.get(i);
+                    wtoken.setExiting();
+                    if (wtoken.windowType == TYPE_WALLPAPER) {
+                        mWallpaperControllerLocked.removeWallpaperToken(wtoken);
+                    }
+
+                    mInputMonitor.updateInputWindowsLw(true /*force*/);
+                }
             }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
         }
-        Binder.restoreCallingIdentity(origId);
     }
 
     private Task createTaskLocked(int taskId, int stackId, int userId, AppWindowToken atoken,
@@ -2841,12 +2829,18 @@
         }
 
         synchronized(mWindowMap) {
-            AppWindowToken atoken = findAppWindowToken(token.asBinder());
+            AppWindowToken atoken = mRoot.getAppWindowToken(token.asBinder());
             if (atoken != null) {
                 Slog.w(TAG_WM, "Attempted to add existing app token: " + token);
                 return;
             }
-            atoken = new AppWindowToken(this, token, voiceInteraction);
+
+            final TaskStack stack = mStackIdToStack.get(stackId);
+            if (stack == null) {
+                throw new IllegalArgumentException("addAppToken: invalid stackId=" + stackId);
+            }
+
+            atoken = new AppWindowToken(this, token, voiceInteraction, stack.getDisplayContent());
             atoken.inputDispatchingTimeoutNanos = inputDispatchingTimeoutNanos;
             atoken.setFillsParent(fullscreen);
             atoken.showForAllUsers = showForAllUsers;
@@ -2882,7 +2876,7 @@
         }
 
         synchronized(mWindowMap) {
-            final AppWindowToken atoken = findAppWindowToken(token);
+            final AppWindowToken atoken = mRoot.getAppWindowToken(token);
             if (atoken == null) {
                 Slog.w(TAG_WM, "Attempted to set task id of non-existing app token: " + token);
                 return;
@@ -2998,12 +2992,10 @@
         Configuration config = null;
 
         if (updateOrientationFromAppTokensLocked(false)) {
-            // If we changed the orientation but mOrientationChangeComplete is
-            // already true, we used seamless rotation, and we don't need
-            // to freeze the screen.
-            if (freezeThisOneIfNeeded != null &&
-                    !mRoot.mOrientationChangeComplete) {
-                final AppWindowToken atoken = findAppWindowToken(freezeThisOneIfNeeded);
+            // If we changed the orientation but mOrientationChangeComplete is already true,
+            // we used seamless rotation, and we don't need to freeze the screen.
+            if (freezeThisOneIfNeeded != null && !mRoot.mOrientationChangeComplete) {
+                final AppWindowToken atoken = mRoot.getAppWindowToken(freezeThisOneIfNeeded);
                 if (atoken != null) {
                     atoken.startFreezingScreen();
                 }
@@ -3117,7 +3109,7 @@
         }
 
         synchronized(mWindowMap) {
-            final AppWindowToken atoken = findAppWindowToken(token.asBinder());
+            final AppWindowToken atoken = mRoot.getAppWindowToken(token.asBinder());
             if (atoken == null) {
                 Slog.w(TAG_WM, "Attempted to set orientation of non-existing app token: " + token);
                 return;
@@ -3130,9 +3122,9 @@
     @Override
     public int getAppOrientation(IApplicationToken token) {
         synchronized(mWindowMap) {
-            AppWindowToken wtoken = findAppWindowToken(token.asBinder());
+            final AppWindowToken wtoken = mRoot.getAppWindowToken(token.asBinder());
             if (wtoken == null) {
-                return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+                return SCREEN_ORIENTATION_UNSPECIFIED;
             }
 
             return wtoken.getOrientation();
@@ -3161,7 +3153,7 @@
                 if (DEBUG_FOCUS_LIGHT) Slog.v(TAG_WM, "Clearing focused app, was " + mFocusedApp);
                 newFocus = null;
             } else {
-                newFocus = findAppWindowToken(token);
+                newFocus = mRoot.getAppWindowToken(token);
                 if (newFocus == null) {
                     Slog.w(TAG_WM, "Attempted to set focus to non-existing app token: " + token);
                 }
@@ -3353,7 +3345,7 @@
                     TAG_WM, "setAppStartingWindow: token=" + token + " pkg=" + pkg
                     + " transferFrom=" + transferFrom);
 
-            AppWindowToken wtoken = findAppWindowToken(token);
+            final AppWindowToken wtoken = mRoot.getAppWindowToken(token);
             if (wtoken == null) {
                 Slog.w(TAG_WM, "Attempted to set icon of non-existing app token: " + token);
                 return false;
@@ -3440,14 +3432,14 @@
 
     public void removeAppStartingWindow(IBinder token) {
         synchronized (mWindowMap) {
-            final AppWindowToken wtoken = mTokenMap.get(token).asAppWindowToken();
+            final AppWindowToken wtoken = mRoot.getAppWindowToken(token);
             scheduleRemoveStartingWindowLocked(wtoken);
         }
     }
 
     public void setAppFullscreen(IBinder token, boolean toOpaque) {
         synchronized (mWindowMap) {
-            final AppWindowToken atoken = findAppWindowToken(token);
+            final AppWindowToken atoken = mRoot.getAppWindowToken(token);
             if (atoken != null) {
                 atoken.setFillsParent(toOpaque);
                 setWindowOpaqueLocked(token, toOpaque);
@@ -3463,7 +3455,7 @@
     }
 
     private void setWindowOpaqueLocked(IBinder token, boolean isOpaque) {
-        final AppWindowToken wtoken = findAppWindowToken(token);
+        final AppWindowToken wtoken = mRoot.getAppWindowToken(token);
         if (wtoken != null) {
             final WindowState win = wtoken.findMainWindow();
             if (win != null) {
@@ -3488,8 +3480,7 @@
         }
 
         synchronized(mWindowMap) {
-            final AppWindowToken wtoken;
-            wtoken = findAppWindowToken(token);
+            final AppWindowToken wtoken = mRoot.getAppWindowToken(token);
             if (wtoken == null) {
                 Slog.w(TAG_WM, "Attempted to notify resumed of non-existing app token: " + token);
                 return;
@@ -3506,7 +3497,7 @@
 
         synchronized(mWindowMap) {
             final AppWindowToken wtoken;
-            wtoken = findAppWindowToken(token);
+            wtoken = mRoot.getAppWindowToken(token);
             if (wtoken == null) {
                 Slog.w(TAG_WM, "Attempted to notify stopped of non-existing app token: " + token);
                 return;
@@ -3524,7 +3515,7 @@
         AppWindowToken wtoken;
 
         synchronized(mWindowMap) {
-            wtoken = findAppWindowToken(token);
+            wtoken = mRoot.getAppWindowToken(token);
             if (wtoken == null) {
                 Slog.w(TAG_WM, "Attempted to set visibility of non-existing app token: " + token);
                 return;
@@ -3644,7 +3635,7 @@
                 return;
             }
 
-            final AppWindowToken wtoken = findAppWindowToken(token);
+            final AppWindowToken wtoken = mRoot.getAppWindowToken(token);
             if (wtoken == null || wtoken.appToken == null) {
                 Slog.w(TAG_WM, "Attempted to freeze screen with non-existing app token: " + wtoken);
                 return;
@@ -3662,7 +3653,7 @@
         }
 
         synchronized(mWindowMap) {
-            final AppWindowToken wtoken = findAppWindowToken(token);
+            final AppWindowToken wtoken = mRoot.getAppWindowToken(token);
             if (wtoken == null || wtoken.appToken == null) {
                 return;
             }
@@ -3680,71 +3671,14 @@
             throw new SecurityException("Requires MANAGE_APP_TOKENS permission");
         }
 
-        AppWindowToken wtoken = null;
-        AppWindowToken startingToken = null;
-        boolean delayed = false;
-
         final long origId = Binder.clearCallingIdentity();
-        synchronized(mWindowMap) {
-            WindowToken basewtoken = mTokenMap.remove(token);
-            if (basewtoken != null && (wtoken = basewtoken.asAppWindowToken()) != null) {
-                if (DEBUG_APP_TRANSITIONS) Slog.v(TAG_WM, "Removing app token: " + wtoken);
-                delayed = wtoken.setVisibility(null, false,
-                        TRANSIT_UNSET, true, wtoken.voiceInteraction);
-                mOpeningApps.remove(wtoken);
-                wtoken.waitingToShow = false;
-                if (mClosingApps.contains(wtoken)) {
-                    delayed = true;
-                } else if (mAppTransition.isTransitionSet()) {
-                    mClosingApps.add(wtoken);
-                    delayed = true;
-                }
-                if (DEBUG_APP_TRANSITIONS) Slog.v(
-                        TAG_WM, "Removing app " + wtoken + " delayed=" + delayed
-                        + " animation=" + wtoken.mAppAnimator.animation
-                        + " animating=" + wtoken.mAppAnimator.animating);
-                if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG_WM, "removeAppToken: "
-                        + wtoken + " delayed=" + delayed + " Callers=" + Debug.getCallers(4));
-                final TaskStack stack = wtoken.mTask.mStack;
-                if (delayed && !wtoken.isEmpty()) {
-                    // set the token aside because it has an active animation to be finished
-                    if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG_WM,
-                            "removeAppToken make exiting: " + wtoken);
-                    stack.mExitingAppTokens.add(wtoken);
-                    wtoken.mIsExiting = true;
-                } else {
-                    // Make sure there is no animation running on this token,
-                    // so any windows associated with it will be removed as
-                    // soon as their animations are complete
-                    wtoken.mAppAnimator.clearAnimation();
-                    wtoken.mAppAnimator.animating = false;
-                    wtoken.removeIfPossible();
-                }
-
-                wtoken.removed = true;
-                if (wtoken.startingData != null) {
-                    startingToken = wtoken;
-                }
-                wtoken.stopFreezingScreen(true, true);
-                if (mFocusedApp == wtoken) {
-                    if (DEBUG_FOCUS_LIGHT) Slog.v(TAG_WM, "Removing focused app token:" + wtoken);
-                    mFocusedApp = null;
-                    updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, true /*updateInputWindows*/);
-                    mInputMonitor.setFocusedAppLw(null);
-                }
-            } else {
-                Slog.w(TAG_WM, "Attempted to remove non-existing app token: " + token);
+        try {
+            synchronized(mWindowMap) {
+                mRoot.removeAppToken(token);
             }
-
-            if (!delayed && wtoken != null) {
-                wtoken.updateReportedVisibilityLocked();
-            }
-
-            // Will only remove if startingToken non null.
-            scheduleRemoveStartingWindowLocked(startingToken);
+        } finally {
+            Binder.restoreCallingIdentity(origId);
         }
-        Binder.restoreCallingIdentity(origId);
-
     }
 
     void scheduleRemoveStartingWindowLocked(AppWindowToken wtoken) {
@@ -5496,7 +5430,8 @@
         final WindowList windows = displayContent.getWindowList();
 
         final int oldRotation = mRotation;
-        boolean rotateSeamlessly = mPolicy.shouldRotateSeamlessly(oldRotation, mRotation);
+        int rotation = mPolicy.rotationForOrientationLw(mLastOrientation, mRotation);
+        boolean rotateSeamlessly = mPolicy.shouldRotateSeamlessly(oldRotation, rotation);
 
         if (rotateSeamlessly) {
             for (int i = windows.size() - 1; i >= 0; i--) {
@@ -5529,7 +5464,6 @@
         //       an orientation that has different metrics than it expected.
         //       eg. Portrait instead of Landscape.
 
-        int rotation = mPolicy.rotationForOrientationLw(mLastOrientation, mRotation);
         boolean altOrientation = !mPolicy.rotationHasCompatibleMetricsLw(
                 mLastOrientation, rotation);
 
@@ -5542,7 +5476,7 @@
 
         if (mRotation == rotation && mAltOrientation == altOrientation) {
             // No change.
-             return false;
+            return false;
         }
 
         if (DEBUG_ORIENTATION) {
@@ -6616,9 +6550,11 @@
         }
 
         synchronized (mWindowMap) {
-            WindowToken token = mTokenMap.get(_token);
-            if (token != null) {
-                mInputMonitor.pauseDispatchingLw(token);
+            final ArrayList<WindowToken> tokens = mRoot.getWindowTokens(_token);
+            if (tokens != null && !tokens.isEmpty()) {
+                for (int i = tokens.size() - 1; i >= 0; --i) {
+                    mInputMonitor.pauseDispatchingLw(tokens.get(i));
+                }
             }
         }
     }
@@ -6630,9 +6566,11 @@
         }
 
         synchronized (mWindowMap) {
-            WindowToken token = mTokenMap.get(_token);
-            if (token != null) {
-                mInputMonitor.resumeDispatchingLw(token);
+            final ArrayList<WindowToken> tokens = mRoot.getWindowTokens(_token);
+            if (tokens != null && !tokens.isEmpty()) {
+                for (int i = tokens.size() - 1; i >= 0; --i) {
+                    mInputMonitor.resumeDispatchingLw(tokens.get(i));
+                }
             }
         }
     }
@@ -8661,7 +8599,7 @@
 
     public void notifyAppRelaunching(IBinder token) {
         synchronized (mWindowMap) {
-            AppWindowToken appWindow = findAppWindowToken(token);
+            final AppWindowToken appWindow = mRoot.getAppWindowToken(token);
             if (appWindow != null) {
                 appWindow.startRelaunching();
             }
@@ -8670,7 +8608,7 @@
 
     public void notifyAppRelaunchingFinished(IBinder token) {
         synchronized (mWindowMap) {
-            AppWindowToken appWindow = findAppWindowToken(token);
+            final AppWindowToken appWindow = mRoot.getAppWindowToken(token);
             if (appWindow != null) {
                 appWindow.finishRelaunching();
             }
@@ -8679,7 +8617,7 @@
 
     public void notifyAppRelaunchesCleared(IBinder token) {
         synchronized (mWindowMap) {
-            final AppWindowToken appWindow = findAppWindowToken(token);
+            final AppWindowToken appWindow = mRoot.getAppWindowToken(token);
             if (appWindow != null) {
                 appWindow.clearRelaunching();
             }
@@ -8703,20 +8641,7 @@
 
     private void dumpTokensLocked(PrintWriter pw, boolean dumpAll) {
         pw.println("WINDOW MANAGER TOKENS (dumpsys window tokens)");
-        if (!mTokenMap.isEmpty()) {
-            pw.println("  All tokens:");
-            Iterator<WindowToken> it = mTokenMap.values().iterator();
-            while (it.hasNext()) {
-                WindowToken token = it.next();
-                pw.print("  "); pw.print(token);
-                if (dumpAll) {
-                    pw.println(':');
-                    token.dump(pw, "    ");
-                } else {
-                    pw.println();
-                }
-            }
-        }
+        mRoot.dumpTokens(pw, dumpAll);
         mWallpaperControllerLocked.dumpTokens(pw, "  ", dumpAll);
         if (!mFinishedStarting.isEmpty()) {
             pw.println();
@@ -9248,7 +9173,7 @@
      */
     public void setWillReplaceWindow(IBinder token, boolean animate) {
         synchronized (mWindowMap) {
-            final AppWindowToken appWindowToken = findAppWindowToken(token);
+            final AppWindowToken appWindowToken = mRoot.getAppWindowToken(token);
             if (appWindowToken == null || !appWindowToken.hasContentToDisplay()) {
                 Slog.w(TAG_WM, "Attempted to set replacing window on non-existing app token "
                         + token);
@@ -9270,9 +9195,9 @@
      */
     // TODO: The s at the end of the method name is the only difference with the name of the method
     // above. We should combine them or find better names.
-    public void setWillReplaceWindows(IBinder token, boolean childrenOnly) {
+    void setWillReplaceWindows(IBinder token, boolean childrenOnly) {
         synchronized (mWindowMap) {
-            final AppWindowToken appWindowToken = findAppWindowToken(token);
+            final AppWindowToken appWindowToken = mRoot.getAppWindowToken(token);
             if (appWindowToken == null || !appWindowToken.hasContentToDisplay()) {
                 Slog.w(TAG_WM, "Attempted to set replacing window on non-existing app token "
                         + token);
@@ -9300,7 +9225,7 @@
      */
     public void scheduleClearWillReplaceWindows(IBinder token, boolean replacing) {
         synchronized (mWindowMap) {
-            final AppWindowToken appWindowToken = findAppWindowToken(token);
+            final AppWindowToken appWindowToken = mRoot.getAppWindowToken(token);
             if (appWindowToken == null) {
                 Slog.w(TAG_WM, "Attempted to reset replacing window on non-existing app token "
                         + token);
@@ -9765,9 +9690,12 @@
         public void removeWindowToken(IBinder token, boolean removeWindows) {
             synchronized(mWindowMap) {
                 if (removeWindows) {
-                    final WindowToken wtoken = mTokenMap.remove(token);
-                    if (wtoken != null) {
-                        wtoken.removeAllWindows();
+                    final ArrayList<WindowToken> removedTokens = mRoot.removeWindowToken(token);
+                    if (removedTokens != null && !removedTokens.isEmpty()) {
+                        for (int i = removedTokens.size() - 1; i >= 0; --i) {
+                            final WindowToken wtoken = removedTokens.get(i);
+                            wtoken.removeAllWindows();
+                        }
                     }
                 }
                 WindowManagerService.this.removeWindowToken(token);
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 184b6cd..272bc9d 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -71,6 +71,7 @@
 import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
 import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_VISIBLE;
 import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW;
+import static android.view.WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW;
 import static android.view.WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON;
 import static android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND;
 import static android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD;
@@ -468,9 +469,6 @@
 
     boolean mHasSurface = false;
 
-    private boolean mNotOnAppsDisplay = false;
-    DisplayContent  mDisplayContent;
-
     /** When true this window can be displayed on screens owther than mOwnerUid's */
     private boolean mShowToOwnerOnly;
 
@@ -563,7 +561,7 @@
 
     WindowState(WindowManagerService service, Session s, IWindow c, WindowToken token,
            WindowState parentWindow, int appOp, int seq, WindowManager.LayoutParams a,
-           int viewVisibility, final DisplayContent displayContent, int ownerId) {
+           int viewVisibility, int ownerId) {
         mService = service;
         mSession = s;
         mClient = c;
@@ -587,7 +585,6 @@
         };
         mAttrs.copyFrom(a);
         mViewVisibility = viewVisibility;
-        mDisplayContent = displayContent;
         mPolicy = mService.mPolicy;
         mContext = mService.mContext;
         DeathRecipient deathRecipient = new DeathRecipient();
@@ -643,15 +640,10 @@
         }
         mIsFloatingLayer = mIsImWindow || mIsWallpaper;
 
-        if (mAppToken != null) {
-            final DisplayContent appDisplay = getDisplayContent();
-            mNotOnAppsDisplay = displayContent != appDisplay;
-
-            if (mAppToken.showForAllUsers) {
-                // Windows for apps that can show for all users should also show when the
-                // device is locked.
-                mAttrs.flags |= FLAG_SHOW_WHEN_LOCKED;
-            }
+        if (mAppToken != null && mAppToken.showForAllUsers) {
+            // Windows for apps that can show for all users should also show when the device is
+            // locked.
+            mAttrs.flags |= FLAG_SHOW_WHEN_LOCKED;
         }
 
         mWinAnimator = new WindowStateAnimator(this);
@@ -666,7 +658,7 @@
         mLayer = 0;
         mInputWindowHandle = new InputWindowHandle(
                 mAppToken != null ? mAppToken.mInputApplicationHandle : null, this,
-                displayContent.getDisplayId());
+                getDisplayContent().getDisplayId());
     }
 
     void attach() {
@@ -714,6 +706,7 @@
         final Task task = getTask();
         final boolean fullscreenTask = !isInMultiWindowMode();
         final boolean windowsAreFloating = task != null && task.isFloating();
+        final DisplayContent dc = getDisplayContent();
 
         // If the task has temp inset bounds set, we have to make sure all its windows uses
         // the temp inset frame. Otherwise different display frames get applied to the main
@@ -779,8 +772,7 @@
             layoutXDiff = !mInsetFrame.isEmpty() ? mInsetFrame.left - mContainingFrame.left : 0;
             layoutYDiff = !mInsetFrame.isEmpty() ? mInsetFrame.top - mContainingFrame.top : 0;
             layoutContainingFrame = !mInsetFrame.isEmpty() ? mInsetFrame : mContainingFrame;
-            mTmpRect.set(0, 0, mDisplayContent.getDisplayInfo().logicalWidth,
-                    mDisplayContent.getDisplayInfo().logicalHeight);
+            mTmpRect.set(0, 0, dc.getDisplayInfo().logicalWidth, dc.getDisplayInfo().logicalHeight);
             subtractInsets(mDisplayFrame, layoutContainingFrame, df, mTmpRect);
             if (!layoutInParentFrame()) {
                 subtractInsets(mContainingFrame, layoutContainingFrame, pf, mTmpRect);
@@ -852,7 +844,7 @@
             mVisibleFrame.set(mContentFrame);
             mStableFrame.set(mContentFrame);
         } else if (mAttrs.type == TYPE_DOCK_DIVIDER) {
-            mDisplayContent.getDockedDividerController().positionDockedStackedDivider(mFrame);
+            dc.getDockedDividerController().positionDockedStackedDivider(mFrame);
             mContentFrame.set(mFrame);
             if (!mFrame.equals(mLastFrame)) {
                 mMovedByResize = true;
@@ -1187,20 +1179,16 @@
         }
     }
 
-    public DisplayContent getDisplayContent() {
-        if (mAppToken == null || mNotOnAppsDisplay) {
-            return mDisplayContent;
-        }
-        final TaskStack stack = getStack();
-        return stack == null ? mDisplayContent : stack.getDisplayContent();
+    DisplayContent getDisplayContent() {
+        return mToken.getDisplayContent();
     }
 
-    public DisplayInfo getDisplayInfo() {
+    DisplayInfo getDisplayInfo() {
         final DisplayContent displayContent = getDisplayContent();
         return displayContent != null ? displayContent.getDisplayInfo() : null;
     }
 
-    public int getDisplayId() {
+    int getDisplayId() {
         final DisplayContent displayContent = getDisplayContent();
         if (displayContent == null) {
             return -1;
@@ -1221,8 +1209,8 @@
         }
         // Some system windows (e.g. "Power off" dialog) don't have a task, but we would still
         // associate them with some stack to enable dimming.
-        return mAttrs.type >= WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
-                && mDisplayContent != null ? mDisplayContent.getHomeStack() : null;
+        final DisplayContent dc = getDisplayContent();
+        return mAttrs.type >= FIRST_SYSTEM_WINDOW && dc != null ? dc.getHomeStack() : null;
     }
 
     /**
@@ -2000,12 +1988,12 @@
     }
 
     void scheduleAnimationIfDimming() {
-        if (mDisplayContent == null) {
+        final DisplayContent dc = getDisplayContent();
+        if (dc == null) {
             return;
         }
         final DimLayer.DimLayerUser dimLayerUser = getDimLayerUser();
-        if (dimLayerUser != null && mDisplayContent.mDimLayerController.isDimming(
-                dimLayerUser, mWinAnimator)) {
+        if (dimLayerUser != null && dc.mDimLayerController.isDimming(dimLayerUser, mWinAnimator)) {
             // Force an animation pass just to update the mDimLayer layer.
             mService.scheduleAnimationLocked();
         }
@@ -2118,16 +2106,17 @@
             return;
         }
 
+        final DisplayContent dc = getDisplayContent();
         if (!mAnimatingExit && mAppDied) {
             // If app died visible, apply a dim over the window to indicate that it's inactive
-            mDisplayContent.mDimLayerController.applyDimAbove(getDimLayerUser(), mWinAnimator);
+            dc.mDimLayerController.applyDimAbove(getDimLayerUser(), mWinAnimator);
         } else if ((mAttrs.flags & FLAG_DIM_BEHIND) != 0
-                && mDisplayContent != null && !mAnimatingExit && isVisibleUnchecked()) {
-            mDisplayContent.mDimLayerController.applyDimBehind(getDimLayerUser(), mWinAnimator);
+                && dc != null && !mAnimatingExit && isVisibleUnchecked()) {
+            dc.mDimLayerController.applyDimBehind(getDimLayerUser(), mWinAnimator);
         }
     }
 
-    DimLayer.DimLayerUser getDimLayerUser() {
+    private DimLayer.DimLayerUser getDimLayerUser() {
         Task task = getTask();
         if (task != null) {
             return task;
@@ -2186,8 +2175,9 @@
     }
 
     void setDisplayLayoutNeeded() {
-        if (mDisplayContent != null) {
-            mDisplayContent.setLayoutNeeded();
+        final DisplayContent dc = getDisplayContent();
+        if (dc != null) {
+            dc.setLayoutNeeded();
         }
     }
 
@@ -2908,18 +2898,19 @@
     @Override
     public boolean isDimming() {
         final DimLayer.DimLayerUser dimLayerUser = getDimLayerUser();
-        return dimLayerUser != null && mDisplayContent != null &&
-                mDisplayContent.mDimLayerController.isDimming(dimLayerUser, mWinAnimator);
+        final DisplayContent dc = getDisplayContent();
+        return dimLayerUser != null && dc != null
+                && dc.mDimLayerController.isDimming(dimLayerUser, mWinAnimator);
     }
 
-    public void setShowToOwnerOnlyLocked(boolean showToOwnerOnly) {
+    void setShowToOwnerOnlyLocked(boolean showToOwnerOnly) {
         mShowToOwnerOnly = showToOwnerOnly;
     }
 
     boolean isHiddenFromUserLocked() {
         // Child windows are evaluated based on their parent window.
         final WindowState win = getTopParentWindow();
-        if (win.mAttrs.type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
+        if (win.mAttrs.type < FIRST_SYSTEM_WINDOW
                 && win.mAppToken != null && win.mAppToken.showForAllUsers) {
 
             // All window frames that are fullscreen extend above status bar, but some don't extend
@@ -3214,7 +3205,7 @@
      * @return Whether we reported "resize while not drag resizing" to the application.
      * @see #isResizedWhileNotDragResizing()
      */
-    boolean isResizedWhileNotDragResizingReported() {
+    private boolean isResizedWhileNotDragResizingReported() {
         return mResizedWhileNotDragResizingReported;
     }
 
@@ -3222,7 +3213,7 @@
         return mResizeMode;
     }
 
-    boolean computeDragResizing() {
+    private boolean computeDragResizing() {
         final Task task = getTask();
         if (task == null) {
             return false;
@@ -3240,7 +3231,7 @@
         // and the bounds we clip this window to might be different. In order to avoid holes, we
         // simulate that we are still resizing so the app fills the hole with the resizing
         // background.
-        return (mDisplayContent.mDividerControllerLocked.isResizing()
+        return (getDisplayContent().mDividerControllerLocked.isResizing()
                         || mAppToken != null && !mAppToken.mFrozenBounds.isEmpty()) &&
                 !task.inFreeformWorkspace() && !isGoneForLayoutLw();
 
@@ -3256,7 +3247,7 @@
         if (task != null && task.isDragResizing()) {
             mResizeMode = task.getDragResizeMode();
         } else {
-            mResizeMode = mDragResizing && mDisplayContent.mDividerControllerLocked.isResizing()
+            mResizeMode = mDragResizing && getDisplayContent().mDividerControllerLocked.isResizing()
                     ? DRAG_RESIZE_MODE_DOCKED_DIVIDER
                     : DRAG_RESIZE_MODE_FREEFORM;
         }
@@ -3276,9 +3267,6 @@
                 if (stack != null) {
                     pw.print(" stackId="); pw.print(stack.mStackId);
                 }
-                if (mNotOnAppsDisplay) {
-                    pw.print(" mNotOnAppsDisplay="); pw.print(mNotOnAppsDisplay);
-                }
                 pw.print(" mSession="); pw.print(mSession);
                 pw.print(" mClient="); pw.println(mClient.asBinder());
         pw.print(prefix); pw.print("mOwnerUid="); pw.print(mOwnerUid);
@@ -3664,9 +3652,10 @@
     }
 
     void requestUpdateWallpaperIfNeeded() {
-        if (mDisplayContent != null && (mAttrs.flags & FLAG_SHOW_WALLPAPER) != 0) {
-            mDisplayContent.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
-            mDisplayContent.setLayoutNeeded();
+        final DisplayContent dc = getDisplayContent();
+        if (dc != null && (mAttrs.flags & FLAG_SHOW_WALLPAPER) != 0) {
+            dc.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
+            dc.setLayoutNeeded();
             mService.mWindowPlacerLocked.requestTraversal();
         }
 
@@ -3692,12 +3681,12 @@
         return winY;
     }
 
-    void transferDimToReplacement() {
+    private void transferDimToReplacement() {
         final DimLayer.DimLayerUser dimLayerUser = getDimLayerUser();
-        if (dimLayerUser != null && mDisplayContent != null) {
-            mDisplayContent.mDimLayerController.applyDim(dimLayerUser,
-                    mReplacementWindow.mWinAnimator,
-                    (mAttrs.flags & FLAG_DIM_BEHIND) != 0 ? true : false);
+        final DisplayContent dc = getDisplayContent();
+        if (dimLayerUser != null && dc != null) {
+            dc.mDimLayerController.applyDim(dimLayerUser,
+                    mReplacementWindow.mWinAnimator, (mAttrs.flags & FLAG_DIM_BEHIND) != 0);
         }
     }
 
@@ -3795,13 +3784,13 @@
         }
 
         if (mAttrs.type == TYPE_INPUT_METHOD) {
-            mDisplayContent.mDividerControllerLocked.resetImeHideRequested();
+            getDisplayContent().mDividerControllerLocked.resetImeHideRequested();
         }
 
         return true;
     }
 
-    void logPerformShow(String prefix) {
+    private void logPerformShow(String prefix) {
         if (DEBUG_VISIBILITY
                 || (DEBUG_STARTING_WINDOW && mAttrs.type == TYPE_APPLICATION_STARTING)) {
             Slog.v(TAG, prefix + this
@@ -3811,11 +3800,11 @@
                     + " during animation: policyVis=" + mPolicyVisibility
                     + " parentHidden=" + isParentWindowHidden()
                     + " tok.hiddenRequested="
-                    + (mAppToken != null ? mAppToken.hiddenRequested : false)
-                    + " tok.hidden=" + (mAppToken != null ? mAppToken.hidden : false)
+                    + (mAppToken != null && mAppToken.hiddenRequested)
+                    + " tok.hidden=" + (mAppToken != null && mAppToken.hidden)
                     + " animating=" + mWinAnimator.mAnimating
                     + " tok animating="
-                    + (mWinAnimator.mAppAnimator != null ? mWinAnimator.mAppAnimator.animating : false)
+                    + (mWinAnimator.mAppAnimator != null && mWinAnimator.mAppAnimator.animating)
                     + " Callers=" + Debug.getCallers(4));
         }
     }
@@ -3873,13 +3862,8 @@
     }
 
     @Override
-    int rebuildWindowList(DisplayContent dc, int addIndex) {
-        final DisplayContent winDisplayContent = getDisplayContent();
-        if (winDisplayContent == dc || winDisplayContent == null) {
-            mDisplayContent = dc;
-            return reAddWindow(addIndex);
-        }
-        return addIndex;
+    int rebuildWindowList(int addIndex) {
+        return reAddWindow(addIndex);
     }
 
     // TODO: come-up with a better name for this method that represents what it does.
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 1fae77d..53fb99b 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1750,7 +1750,7 @@
         Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
 
         if (mWin.mAttrs.type == TYPE_INPUT_METHOD) {
-            mWin.mDisplayContent.adjustForImeIfNeeded();
+            mWin.getDisplayContent().adjustForImeIfNeeded();
             if (isEntrance) {
                 mWin.setDisplayLayoutNeeded();
                 mService.mWindowPlacerLocked.requestTraversal();
@@ -1936,24 +1936,8 @@
         // Compute a transform matrix to undo the coordinate space transformation,
         // and present the window at the same physical position it previously occupied.
         final int deltaRotation = DisplayContent.deltaRotation(newRotation, oldRotation);
-        switch (deltaRotation) {
-        case Surface.ROTATION_0:
-            transform.reset();
-            break;
-        case Surface.ROTATION_270:
-            transform.setRotate(270, 0, 0);
-            transform.postTranslate(0, displayHeight);
-            transform.postTranslate(y, 0);
-            break;
-        case Surface.ROTATION_180:
-            transform.reset();
-            break;
-        case Surface.ROTATION_90:
-            transform.setRotate(90, 0, 0);
-            transform.postTranslate(displayWidth, 0);
-            transform.postTranslate(-y, x);
-            break;
-        }
+        DisplayContent.createRotationMatrix(deltaRotation, x, y, displayWidth, displayHeight,
+                transform);
 
         // We have two cases:
         //  1. Windows with NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY:
diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index 166107c..28c9e5e 100644
--- a/services/core/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
@@ -78,12 +78,16 @@
     // windows will be put to the bottom of the list.
     boolean sendingToBottom;
 
-    WindowToken(WindowManagerService service, IBinder _token, int type, boolean _explicit) {
+    // The display this token is on.
+    private DisplayContent mDisplayContent;
+
+    WindowToken(WindowManagerService service, IBinder _token, int type, boolean _explicit,
+            DisplayContent dc) {
         mService = service;
         token = _token;
         windowType = type;
         explicit = _explicit;
-        mService.mTokenMap.put(token, this);
+        onDisplayChanged(dc);
     }
 
     void removeAllWindows() {
@@ -400,6 +404,33 @@
         return null;
     }
 
+    DisplayContent getDisplayContent() {
+        return mDisplayContent;
+    }
+
+    @Override
+    void removeImmediately() {
+        super.removeImmediately();
+        if (mDisplayContent != null) {
+            mDisplayContent.removeWindowToken(token);
+            mService.mRoot.removeWindowTokenIfPossible(token);
+        }
+    }
+
+    void onDisplayChanged(DisplayContent dc) {
+        if (mDisplayContent == dc) {
+            return;
+        }
+
+        if (mDisplayContent != null) {
+            mDisplayContent.removeWindowToken(token);
+        }
+        mDisplayContent = dc;
+        mDisplayContent.setWindowToken(token, this);
+
+        super.onDisplayChanged(dc);
+    }
+
     void dump(PrintWriter pw, String prefix) {
         pw.print(prefix); pw.print("windows="); pw.println(mChildren);
         pw.print(prefix); pw.print("windowType="); pw.print(windowType);
diff --git a/services/core/jni/Android.mk b/services/core/jni/Android.mk
index 9459517..d328ade 100644
--- a/services/core/jni/Android.mk
+++ b/services/core/jni/Android.mk
@@ -7,7 +7,6 @@
 LOCAL_SRC_FILES += \
     $(LOCAL_REL_DIR)/com_android_server_AlarmManagerService.cpp \
     $(LOCAL_REL_DIR)/com_android_server_am_BatteryStatsService.cpp \
-    $(LOCAL_REL_DIR)/com_android_server_AssetAtlasService.cpp \
     $(LOCAL_REL_DIR)/com_android_server_connectivity_Vpn.cpp \
     $(LOCAL_REL_DIR)/com_android_server_ConsumerIrService.cpp \
     $(LOCAL_REL_DIR)/com_android_server_HardwarePropertiesManagerService.cpp \
@@ -65,4 +64,9 @@
     libEGL \
     libGLESv2 \
     libnetutils \
-
+    libhidl \
+    libhwbinder \
+    libutils \
+    android.hardware.power@1.0 \
+    android.hardware.vibrator@1.0 \
+    android.hardware.light@2.0 \
diff --git a/services/core/jni/com_android_server_AssetAtlasService.cpp b/services/core/jni/com_android_server_AssetAtlasService.cpp
deleted file mode 100644
index d004e30..0000000
--- a/services/core/jni/com_android_server_AssetAtlasService.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#define LOG_TAG "AssetAtlasService"
-
-#include "jni.h"
-#include "JNIHelp.h"
-#include "android/graphics/GraphicsJNI.h"
-
-#include <android_view_GraphicBuffer.h>
-#include <cutils/log.h>
-
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-
-// Disable warnings for Skia.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wunused-parameter"
-#include <SkCanvas.h>
-#include <SkBitmap.h>
-#pragma GCC diagnostic pop
-
-namespace android {
-
-// ----------------------------------------------------------------------------
-// Defines
-// ----------------------------------------------------------------------------
-
-// Defines how long to wait for the GPU when uploading the atlas
-// This timeout is defined in nanoseconds (see EGL_KHR_fence_sync extension)
-#define FENCE_TIMEOUT 2000000000
-
-// ----------------------------------------------------------------------------
-// Canvas management
-// ----------------------------------------------------------------------------
-
-#define CLEANUP_GL_AND_RETURN(result) \
-    if (fence != EGL_NO_SYNC_KHR) eglDestroySyncKHR(display, fence); \
-    if (image) eglDestroyImageKHR(display, image); \
-    if (texture) glDeleteTextures(1, &texture); \
-    if (surface != EGL_NO_SURFACE) eglDestroySurface(display, surface); \
-    if (context != EGL_NO_CONTEXT) eglDestroyContext(display, context); \
-    eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); \
-    eglReleaseThread(); \
-    eglTerminate(display); \
-    return result;
-
-static jboolean com_android_server_AssetAtlasService_upload(JNIEnv* env, jobject,
-        jobject graphicBuffer, jobject bitmapHandle) {
-
-    SkBitmap bitmap;
-    GraphicsJNI::getSkBitmap(env, bitmapHandle, &bitmap);
-    SkAutoLockPixels alp(bitmap);
-
-    // The goal of this method is to copy the bitmap into the GraphicBuffer
-    // using the GPU to swizzle the texture content
-    sp<GraphicBuffer> buffer(graphicBufferForJavaObject(env, graphicBuffer));
-
-    if (buffer != NULL) {
-        EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-        if (display == EGL_NO_DISPLAY) return JNI_FALSE;
-
-        EGLint major;
-        EGLint minor;
-        if (!eglInitialize(display, &major, &minor)) {
-            ALOGW("Could not initialize EGL");
-            return JNI_FALSE;
-        }
-
-        // We're going to use a 1x1 pbuffer surface later on
-        // The configuration doesn't really matter for what we're trying to do
-        EGLint configAttrs[] = {
-                EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-                EGL_RED_SIZE, 8,
-                EGL_GREEN_SIZE, 8,
-                EGL_BLUE_SIZE, 8,
-                EGL_ALPHA_SIZE, 0,
-                EGL_DEPTH_SIZE, 0,
-                EGL_STENCIL_SIZE, 0,
-                EGL_NONE
-        };
-        EGLConfig configs[1];
-        EGLint configCount;
-        if (!eglChooseConfig(display, configAttrs, configs, 1, &configCount)) {
-            ALOGW("Could not select EGL configuration");
-            eglReleaseThread();
-            eglTerminate(display);
-            return JNI_FALSE;
-        }
-        if (configCount <= 0) {
-            ALOGW("Could not find EGL configuration");
-            eglReleaseThread();
-            eglTerminate(display);
-            return JNI_FALSE;
-        }
-
-        // These objects are initialized below but the default "null"
-        // values are used to cleanup properly at any point in the
-        // initialization sequence
-        GLuint texture = 0;
-        EGLImageKHR image = EGL_NO_IMAGE_KHR;
-        EGLSurface surface = EGL_NO_SURFACE;
-        EGLSyncKHR fence = EGL_NO_SYNC_KHR;
-
-        EGLint attrs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
-        EGLContext context = eglCreateContext(display, configs[0], EGL_NO_CONTEXT, attrs);
-        if (context == EGL_NO_CONTEXT) {
-            ALOGW("Could not create EGL context");
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        // Create the 1x1 pbuffer
-        EGLint surfaceAttrs[] = { EGL_WIDTH, 1, EGL_HEIGHT, 1, EGL_NONE };
-        surface = eglCreatePbufferSurface(display, configs[0], surfaceAttrs);
-        if (surface == EGL_NO_SURFACE) {
-            ALOGW("Could not create EGL surface");
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        if (!eglMakeCurrent(display, surface, surface, context)) {
-            ALOGW("Could not change current EGL context");
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        // We use an EGLImage to access the content of the GraphicBuffer
-        // The EGL image is later bound to a 2D texture
-        EGLClientBuffer clientBuffer = (EGLClientBuffer) buffer->getNativeBuffer();
-        EGLint imageAttrs[] = { EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE };
-        image = eglCreateImageKHR(display, EGL_NO_CONTEXT,
-                EGL_NATIVE_BUFFER_ANDROID, clientBuffer, imageAttrs);
-        if (image == EGL_NO_IMAGE_KHR) {
-            ALOGW("Could not create EGL image");
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        glGenTextures(1, &texture);
-        glBindTexture(GL_TEXTURE_2D, texture);
-        glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
-        if (glGetError() != GL_NO_ERROR) {
-            ALOGW("Could not create/bind texture");
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        // Upload the content of the bitmap in the GraphicBuffer
-        glPixelStorei(GL_UNPACK_ALIGNMENT, bitmap.bytesPerPixel());
-        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bitmap.width(), bitmap.height(),
-                GL_RGBA, GL_UNSIGNED_BYTE, bitmap.getPixels());
-        if (glGetError() != GL_NO_ERROR) {
-            ALOGW("Could not upload to texture");
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        // The fence is used to wait for the texture upload to finish
-        // properly. We cannot rely on glFlush() and glFinish() as
-        // some drivers completely ignore these API calls
-        fence = eglCreateSyncKHR(display, EGL_SYNC_FENCE_KHR, NULL);
-        if (fence == EGL_NO_SYNC_KHR) {
-            ALOGW("Could not create sync fence %#x", eglGetError());
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        // The flag EGL_SYNC_FLUSH_COMMANDS_BIT_KHR will trigger a
-        // pipeline flush (similar to what a glFlush() would do.)
-        EGLint waitStatus = eglClientWaitSyncKHR(display, fence,
-                EGL_SYNC_FLUSH_COMMANDS_BIT_KHR, FENCE_TIMEOUT);
-        if (waitStatus != EGL_CONDITION_SATISFIED_KHR) {
-            ALOGW("Failed to wait for the fence %#x", eglGetError());
-            CLEANUP_GL_AND_RETURN(JNI_FALSE);
-        }
-
-        CLEANUP_GL_AND_RETURN(JNI_TRUE);
-    }
-
-    return JNI_FALSE;
-}
-
-// ----------------------------------------------------------------------------
-// JNI Glue
-// ----------------------------------------------------------------------------
-
-#define FIND_CLASS(var, className) \
-        var = env->FindClass(className); \
-        LOG_FATAL_IF(! (var), "Unable to find class " className);
-
-#define GET_METHOD_ID(var, clazz, methodName, methodDescriptor) \
-        var = env->GetMethodID(clazz, methodName, methodDescriptor); \
-        LOG_FATAL_IF(!(var), "Unable to find method " methodName);
-
-const char* const kClassPathName = "com/android/server/AssetAtlasService";
-
-static const JNINativeMethod gMethods[] = {
-    { "nUploadAtlas", "(Landroid/view/GraphicBuffer;Landroid/graphics/Bitmap;)Z",
-            (void*) com_android_server_AssetAtlasService_upload },
-};
-
-int register_android_server_AssetAtlasService(JNIEnv* env) {
-    return jniRegisterNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
-}
-
-};
diff --git a/services/core/jni/com_android_server_VibratorService.cpp b/services/core/jni/com_android_server_VibratorService.cpp
index 03fbd19..cc52260 100644
--- a/services/core/jni/com_android_server_VibratorService.cpp
+++ b/services/core/jni/com_android_server_VibratorService.cpp
@@ -16,6 +16,9 @@
 
 #define LOG_TAG "VibratorService"
 
+#include <android/hardware/vibrator/1.0/IVibrator.h>
+#include <android/hardware/vibrator/1.0/types.h>
+
 #include "jni.h"
 #include "JNIHelp.h"
 #include "android_runtime/AndroidRuntime.h"
@@ -26,32 +29,27 @@
 
 #include <stdio.h>
 
+using android::hardware::getService;
+using android::hardware::vibrator::V1_0::IVibrator;
+using android::hardware::vibrator::V1_0::Status;
+
 namespace android
 {
 
-static hw_module_t *gVibraModule = NULL;
-static vibrator_device_t *gVibraDevice = NULL;
+static sp<IVibrator> mHal;
 
 static void vibratorInit(JNIEnv /* env */, jobject /* clazz */)
 {
-    if (gVibraModule != NULL) {
+    /* TODO(b/31632518) */
+    if (mHal != nullptr) {
         return;
     }
-
-    int err = hw_get_module(VIBRATOR_HARDWARE_MODULE_ID, (hw_module_t const**)&gVibraModule);
-
-    if (err) {
-        ALOGE("Couldn't load %s module (%s)", VIBRATOR_HARDWARE_MODULE_ID, strerror(-err));
-    } else {
-        if (gVibraModule) {
-            vibrator_open(gVibraModule, &gVibraDevice);
-        }
-    }
+    mHal = IVibrator::getService("vibrator");
 }
 
 static jboolean vibratorExists(JNIEnv* /* env */, jobject /* clazz */)
 {
-    if (gVibraModule && gVibraDevice) {
+    if (mHal != nullptr) {
         return JNI_TRUE;
     } else {
         return JNI_FALSE;
@@ -60,10 +58,10 @@
 
 static void vibratorOn(JNIEnv* /* env */, jobject /* clazz */, jlong timeout_ms)
 {
-    if (gVibraDevice) {
-        int err = gVibraDevice->vibrator_on(gVibraDevice, timeout_ms);
-        if (err != 0) {
-            ALOGE("The hw module failed in vibrator_on: %s", strerror(-err));
+    if (mHal != nullptr) {
+        Status retStatus = mHal->on(timeout_ms);
+        if (retStatus == Status::ERR) {
+            ALOGE("vibratorOn command failed.");
         }
     } else {
         ALOGW("Tried to vibrate but there is no vibrator device.");
@@ -72,10 +70,10 @@
 
 static void vibratorOff(JNIEnv* /* env */, jobject /* clazz */)
 {
-    if (gVibraDevice) {
-        int err = gVibraDevice->vibrator_off(gVibraDevice);
-        if (err != 0) {
-            ALOGE("The hw module failed in vibrator_off(): %s", strerror(-err));
+    if (mHal != nullptr) {
+        Status retStatus = mHal->off();
+        if (retStatus == Status::ERR) {
+            ALOGE("vibratorOff command failed.");
         }
     } else {
         ALOGW("Tried to stop vibrating but there is no vibrator device.");
diff --git a/services/core/jni/com_android_server_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
index ecdc71e..b22d5e7 100644
--- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp
+++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
@@ -17,6 +17,7 @@
 #define LOG_TAG "BatteryStatsService"
 //#define LOG_NDEBUG 0
 
+#include <android/hardware/power/1.0/IPower.h>
 #include <android_runtime/AndroidRuntime.h>
 #include <jni.h>
 
@@ -26,8 +27,6 @@
 #include <cutils/log.h>
 #include <utils/misc.h>
 #include <utils/Log.h>
-#include <hardware/hardware.h>
-#include <hardware/power.h>
 #include <suspend/autosuspend.h>
 
 #include <inttypes.h>
@@ -41,6 +40,14 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+using android::hardware::Return;
+using android::hardware::Void;
+using android::hardware::power::V1_0::IPower;
+using android::hardware::power::V1_0::PowerStatePlatformSleepState;
+using android::hardware::power::V1_0::PowerStateVoter;
+using android::hardware::power::V1_0::Status;
+using android::hardware::hidl_vec;
+
 namespace android
 {
 
@@ -49,7 +56,7 @@
 
 static bool wakeup_init = false;
 static sem_t wakeup_sem;
-extern struct power_module* gPowerModule;
+extern sp<IPower> gPowerHal;
 
 static void wakeup_callback(bool success)
 {
@@ -174,86 +181,34 @@
 }
 
 static jint getPlatformLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject outBuf) {
-    int num_modes = -1;
-    char *output = (char*)env->GetDirectBufferAddress(outBuf), *offset = output;
+    char *output = (char*)env->GetDirectBufferAddress(outBuf);
+    char *offset = output;
     int remaining = (int)env->GetDirectBufferCapacity(outBuf);
-    power_state_platform_sleep_state_t *list;
-    size_t *voter_list;
     int total_added = -1;
 
     if (outBuf == NULL) {
         jniThrowException(env, "java/lang/NullPointerException", "null argument");
-        goto error;
+        return -1;
     }
 
-    if (!gPowerModule) {
-        ALOGE("%s: gPowerModule not loaded", POWER_HARDWARE_MODULE_ID);
-        goto error;
+    if (gPowerHal == nullptr) {
+        ALOGE("gPowerHal not loaded");
+        return -1;
     }
 
-    if (! (gPowerModule->get_platform_low_power_stats && gPowerModule->get_number_of_platform_modes
-       && gPowerModule->get_voter_list)) {
-        ALOGE("%s: Missing API", POWER_HARDWARE_MODULE_ID);
-        goto error;
-    }
+    gPowerHal->getPlatformLowPowerStats(
+        [&offset, &remaining, &total_added](hidl_vec<PowerStatePlatformSleepState> states,
+                Status status) {
+            if (status != Status::SUCCESS)
+                return;
+            for (size_t i = 0; i < states.size(); i++) {
+                int added;
+                const PowerStatePlatformSleepState& state = states[i];
 
-    if (gPowerModule->get_number_of_platform_modes) {
-        num_modes = gPowerModule->get_number_of_platform_modes(gPowerModule);
-    }
-
-    if (num_modes < 1) {
-        ALOGE("%s: Platform does not even have one low power mode", POWER_HARDWARE_MODULE_ID);
-        goto error;
-    }
-
-    list = (power_state_platform_sleep_state_t *)calloc(num_modes,
-        sizeof(power_state_platform_sleep_state_t));
-    if (!list) {
-        ALOGE("%s: power_state_platform_sleep_state_t allocation failed", POWER_HARDWARE_MODULE_ID);
-        goto error;
-    }
-
-    voter_list = (size_t *)calloc(num_modes, sizeof(*voter_list));
-    if (!voter_list) {
-        ALOGE("%s: voter_list allocation failed", POWER_HARDWARE_MODULE_ID);
-        goto err_free;
-    }
-
-    gPowerModule->get_voter_list(gPowerModule, voter_list);
-
-    for (int i = 0; i < num_modes; i++) {
-        list[i].voters = (power_state_voter_t *)calloc(voter_list[i],
-                         sizeof(power_state_voter_t));
-        if (!list[i].voters) {
-            ALOGE("%s: voter_t allocation failed", POWER_HARDWARE_MODULE_ID);
-            goto err_free;
-        }
-    }
-
-    if (!gPowerModule->get_platform_low_power_stats(gPowerModule, list)) {
-        for (int i = 0; i < num_modes; i++) {
-            int added;
-
-            added = snprintf(offset, remaining,
-                    "state_%d name=%s time=%" PRIu64 " count=%" PRIu64 " ",
-                    i + 1, list[i].name, list[i].residency_in_msec_since_boot,
-                    list[i].total_transitions);
-            if (added < 0) {
-                break;
-            }
-            if (added > remaining) {
-                added = remaining;
-            }
-            offset += added;
-            remaining -= added;
-            total_added += added;
-
-            for (unsigned int j = 0; j < list[i].number_of_voters; j++) {
                 added = snprintf(offset, remaining,
-                        "voter_%d name=%s time=%" PRIu64 " count=%" PRIu64 " ",
-                        j + 1, list[i].voters[j].name,
-                        list[i].voters[j].total_time_in_msec_voted_for_since_boot,
-                        list[i].voters[j].total_number_of_times_voted_since_boot);
+                    "state_%zu name=%s time=%" PRIu64 " count=%" PRIu64 " ",
+                    i + 1, state.name.c_str(), state.residencyInMsecSinceBoot,
+                    state.totalTransitions);
                 if (added < 0) {
                     break;
                 }
@@ -263,27 +218,37 @@
                 offset += added;
                 remaining -= added;
                 total_added += added;
-            }
 
-            if (remaining <= 0) {
-                /* rewrite NULL character*/
-                offset--;
-                total_added--;
-                ALOGE("%s module: buffer not enough", POWER_HARDWARE_MODULE_ID);
-                break;
+                for (size_t j = 0; j < state.voters.size(); j++) {
+                    const PowerStateVoter& voter = state.voters[j];
+                    added = snprintf(offset, remaining,
+                            "voter_%zu name=%s time=%" PRIu64 " count=%" PRIu64 " ",
+                            j + 1, voter.name.c_str(),
+                            voter.totalTimeInMsecVotedForSinceBoot,
+                            voter.totalNumberOfTimesVotedSinceBoot);
+                    if (added < 0) {
+                        break;
+                    }
+                    if (added > remaining) {
+                        added = remaining;
+                    }
+                    offset += added;
+                    remaining -= added;
+                    total_added += added;
+                }
+
+                if (remaining <= 0) {
+                    /* rewrite NULL character*/
+                    offset--;
+                    total_added--;
+                    ALOGE("PowerHal: buffer not enough");
+                    break;
+                }
             }
         }
-    }
+    );
     *offset = 0;
     total_added += 1;
-
-err_free:
-    for (int i = 0; i < num_modes; i++) {
-        free(list[i].voters);
-    }
-    free(list);
-    free(voter_list);
-error:
     return total_added;
 }
 
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
index c8e3946..e6072bb 100644
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
@@ -20,136 +20,105 @@
 #include "JNIHelp.h"
 #include "android_runtime/AndroidRuntime.h"
 
+#include <android/hardware/light/2.0/ILight.h>
+#include <android/hardware/light/2.0/types.h>
 #include <utils/misc.h>
 #include <utils/Log.h>
-#include <hardware/hardware.h>
-#include <hardware/lights.h>
-
+#include <map>
 #include <stdio.h>
 
-namespace android
-{
+namespace android {
 
-// These values must correspond with the LIGHT_ID constants in
-// LightsService.java
-enum {
-    LIGHT_INDEX_BACKLIGHT = 0,
-    LIGHT_INDEX_KEYBOARD = 1,
-    LIGHT_INDEX_BUTTONS = 2,
-    LIGHT_INDEX_BATTERY = 3,
-    LIGHT_INDEX_NOTIFICATIONS = 4,
-    LIGHT_INDEX_ATTENTION = 5,
-    LIGHT_INDEX_BLUETOOTH = 6,
-    LIGHT_INDEX_WIFI = 7,
-    LIGHT_COUNT
-};
+using ILight     = ::android::hardware::light::V2_0::ILight;
+using Brightness = ::android::hardware::light::V2_0::Brightness;
+using Flash      = ::android::hardware::light::V2_0::Flash;
+using Type       = ::android::hardware::light::V2_0::Type;
+using LightState = ::android::hardware::light::V2_0::LightState;
 
-struct Devices {
-    light_device_t* lights[LIGHT_COUNT];
-};
+static sp<ILight> gLight;
 
-static light_device_t* get_device(hw_module_t* module, char const* name)
-{
-    int err;
-    hw_device_t* device;
-    err = module->methods->open(module, name, &device);
-    if (err == 0) {
-        return (light_device_t*)device;
-    } else {
-        return NULL;
-    }
-}
+static bool validate(jint light, jint flash, jint brightness) {
+    bool valid = true;
 
-static jlong init_native(JNIEnv* /* env */, jobject /* clazz */)
-{
-    int err;
-    hw_module_t* module;
-    Devices* devices;
-    
-    devices = (Devices*)malloc(sizeof(Devices));
-
-    err = hw_get_module(LIGHTS_HARDWARE_MODULE_ID, (hw_module_t const**)&module);
-    if (err == 0) {
-        devices->lights[LIGHT_INDEX_BACKLIGHT]
-                = get_device(module, LIGHT_ID_BACKLIGHT);
-        devices->lights[LIGHT_INDEX_KEYBOARD]
-                = get_device(module, LIGHT_ID_KEYBOARD);
-        devices->lights[LIGHT_INDEX_BUTTONS]
-                = get_device(module, LIGHT_ID_BUTTONS);
-        devices->lights[LIGHT_INDEX_BATTERY]
-                = get_device(module, LIGHT_ID_BATTERY);
-        devices->lights[LIGHT_INDEX_NOTIFICATIONS]
-                = get_device(module, LIGHT_ID_NOTIFICATIONS);
-        devices->lights[LIGHT_INDEX_ATTENTION]
-                = get_device(module, LIGHT_ID_ATTENTION);
-        devices->lights[LIGHT_INDEX_BLUETOOTH]
-                = get_device(module, LIGHT_ID_BLUETOOTH);
-        devices->lights[LIGHT_INDEX_WIFI]
-                = get_device(module, LIGHT_ID_WIFI);
-    } else {
-        memset(devices, 0, sizeof(Devices));
+    if (light < 0 || light >= static_cast<int>(Type::COUNT)) {
+        ALOGE("Invalid light parameter %d.", light);
+        valid = false;
     }
 
-    return (jlong)devices;
+    if (flash != static_cast<int>(Flash::NONE) &&
+        flash != static_cast<int>(Flash::TIMED) &&
+        flash != static_cast<int>(Flash::HARDWARE)) {
+        ALOGE("Invalid flash parameter %d.", flash);
+        valid = false;
+    }
+
+    if (brightness != static_cast<int>(Brightness::USER) &&
+        brightness != static_cast<int>(Brightness::SENSOR) &&
+        brightness != static_cast<int>(Brightness::LOW_PERSISTENCE)) {
+        ALOGE("Invalid brightness parameter %d.", brightness);
+        valid = false;
+    }
+
+    return valid;
 }
 
-static void finalize_native(JNIEnv* /* env */, jobject /* clazz */, jlong ptr)
-{
-    Devices* devices = (Devices*)ptr;
-    if (devices == NULL) {
+static void setLight_native(
+        JNIEnv* /* env */,
+        jobject /* clazz */,
+        jint light,
+        jint colorARGB,
+        jint flashMode,
+        jint onMS,
+        jint offMS,
+        jint brightnessMode) {
+
+    if (!validate(light, flashMode, brightnessMode)) {
         return;
     }
 
-    free(devices);
-}
-
-static void setLight_native(JNIEnv* /* env */, jobject /* clazz */, jlong ptr,
-        jint light, jint colorARGB, jint flashMode, jint onMS, jint offMS, jint brightnessMode)
-{
-    Devices* devices = (Devices*)ptr;
-    light_state_t state;
-
-    if (light < 0 || light >= LIGHT_COUNT || devices->lights[light] == NULL) {
-        return ;
+    // TODO(b/31632518)
+    if (gLight == nullptr) {
+        gLight = ILight::getService("light");
     }
 
-    uint32_t version = devices->lights[light]->common.version;
+    if (gLight == nullptr) {
+        ALOGE("LightService unable to get ILight interface.");
+        return;
+    }
 
-    memset(&state, 0, sizeof(light_state_t));
+    Type type = static_cast<Type>(light);
+    Flash flash = static_cast<Flash>(flashMode);
+    Brightness brightness = static_cast<Brightness>(brightnessMode);
 
-    if (brightnessMode == BRIGHTNESS_MODE_LOW_PERSISTENCE) {
-        if (light != LIGHT_INDEX_BACKLIGHT) {
+    LightState state{};
+
+    if (brightnessMode == static_cast<int>(Brightness::LOW_PERSISTENCE)) {
+        if (light != static_cast<int>(Type::BACKLIGHT)) {
             ALOGE("Cannot set low-persistence mode for non-backlight device.");
             return;
         }
-        if (version < LIGHTS_DEVICE_API_VERSION_2_0) {
-            // HAL impl has not been upgraded to support this.
-            return;
-        }
+        state.flashMode = Flash::NONE;
     } else {
         // Only set non-brightness settings when not in low-persistence mode
         state.color = colorARGB;
-        state.flashMode = flashMode;
-        state.flashOnMS = onMS;
-        state.flashOffMS = offMS;
+        state.flashMode = flash;
+        state.flashOnMs = onMS;
+        state.flashOffMs = offMS;
     }
 
-    state.brightnessMode = brightnessMode;
+    state.brightnessMode = brightness;
 
     {
         ALOGD_IF_SLOW(50, "Excessive delay setting light");
-        devices->lights[light]->set_light(devices->lights[light], &state);
+        gLight->setLight(type, state);
     }
 }
 
 static const JNINativeMethod method_table[] = {
-    { "init_native", "()J", (void*)init_native },
-    { "finalize_native", "(J)V", (void*)finalize_native },
-    { "setLight_native", "(JIIIIII)V", (void*)setLight_native },
+    { "setLight_native", "(IIIIII)V", (void*)setLight_native },
 };
 
-int register_android_server_LightsService(JNIEnv *env)
-{
+int register_android_server_LightsService(JNIEnv *env) {
     return jniRegisterNativeMethods(env, "com/android/server/lights/LightsService",
             method_table, NELEM(method_table));
 }
diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
index 048ef76..b2372a3 100644
--- a/services/core/jni/com_android_server_power_PowerManagerService.cpp
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
@@ -18,6 +18,7 @@
 
 //#define LOG_NDEBUG 0
 
+#include <android/hardware/power/1.0/IPower.h>
 #include "JNIHelp.h"
 #include "jni.h"
 
@@ -37,6 +38,13 @@
 
 #include "com_android_server_power_PowerManagerService.h"
 
+using android::hardware::Return;
+using android::hardware::Void;
+using android::hardware::power::V1_0::IPower;
+using android::hardware::power::V1_0::PowerHint;
+using android::hardware::power::V1_0::Feature;
+using android::hardware::hidl_vec;
+
 namespace android {
 
 // ----------------------------------------------------------------------------
@@ -48,8 +56,7 @@
 // ----------------------------------------------------------------------------
 
 static jobject gPowerManagerServiceObj;
-struct power_module* gPowerModule;
-
+sp<IPower> gPowerHal;
 static nsecs_t gLastEventTime[USER_ACTIVITY_EVENT_LAST + 1];
 
 // Throttling interval for user activity calls.
@@ -69,8 +76,8 @@
 
 void android_server_PowerManagerService_userActivity(nsecs_t eventTime, int32_t eventType) {
     // Tell the power HAL when user activity occurs.
-    if (gPowerModule && gPowerModule->powerHint) {
-        gPowerModule->powerHint(gPowerModule, POWER_HINT_INTERACTION, NULL);
+    if (gPowerHal != nullptr) {
+        gPowerHal->powerHint(PowerHint::INTERACTION, 0);
     }
 
     if (gPowerManagerServiceObj) {
@@ -99,16 +106,13 @@
 }
 
 // ----------------------------------------------------------------------------
-
+//TODO(b/31632518)
 static void nativeInit(JNIEnv* env, jobject obj) {
     gPowerManagerServiceObj = env->NewGlobalRef(obj);
 
-    status_t err = hw_get_module(POWER_HARDWARE_MODULE_ID,
-            (hw_module_t const**)&gPowerModule);
-    if (!err) {
-        gPowerModule->init(gPowerModule);
-    } else {
-        ALOGE("Couldn't load %s module (%s)", POWER_HARDWARE_MODULE_ID, strerror(-err));
+    gPowerHal = IPower::getService("power");
+    if (gPowerHal == nullptr) {
+        ALOGE("Couldn't load PowerHAL module");
     }
 }
 
@@ -123,13 +127,13 @@
 }
 
 static void nativeSetInteractive(JNIEnv* /* env */, jclass /* clazz */, jboolean enable) {
-    if (gPowerModule) {
+    if (gPowerHal != nullptr) {
         if (enable) {
             ALOGD_IF_SLOW(20, "Excessive delay in setInteractive(true) while turning screen on");
-            gPowerModule->setInteractive(gPowerModule, true);
+            gPowerHal->setInteractive(true);
         } else {
             ALOGD_IF_SLOW(20, "Excessive delay in setInteractive(false) while turning screen off");
-            gPowerModule->setInteractive(gPowerModule, false);
+            gPowerHal->setInteractive(false);
         }
     }
 }
@@ -145,13 +149,11 @@
 }
 
 static void nativeSendPowerHint(JNIEnv *env, jclass clazz, jint hintId, jint data) {
-    int data_param = data;
-
-    if (gPowerModule && gPowerModule->powerHint) {
+    if (gPowerHal != nullptr) {
         if(data)
-            gPowerModule->powerHint(gPowerModule, (power_hint_t)hintId, &data_param);
+            gPowerHal->powerHint((PowerHint)hintId, data);
         else {
-            gPowerModule->powerHint(gPowerModule, (power_hint_t)hintId, NULL);
+            gPowerHal->powerHint((PowerHint)hintId, 0);
         }
     }
 }
@@ -159,8 +161,8 @@
 static void nativeSetFeature(JNIEnv *env, jclass clazz, jint featureId, jint data) {
     int data_param = data;
 
-    if (gPowerModule && gPowerModule->setFeature) {
-        gPowerModule->setFeature(gPowerModule, (feature_t)featureId, data_param);
+    if (gPowerHal != nullptr) {
+        gPowerHal->setFeature((Feature)featureId, data_param ? true : false);
     }
 }
 
@@ -215,7 +217,7 @@
         gLastEventTime[i] = LLONG_MIN;
     }
     gPowerManagerServiceObj = NULL;
-    gPowerModule = NULL;
+    gPowerHal = NULL;
     return 0;
 }
 
diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp
index 327019d..d69c37f 100644
--- a/services/core/jni/onload.cpp
+++ b/services/core/jni/onload.cpp
@@ -21,7 +21,6 @@
 
 namespace android {
 int register_android_server_AlarmManagerService(JNIEnv* env);
-int register_android_server_AssetAtlasService(JNIEnv* env);
 int register_android_server_BatteryStatsService(JNIEnv* env);
 int register_android_server_ConsumerIrService(JNIEnv *env);
 int register_android_server_InputApplicationHandle(JNIEnv* env);
@@ -76,7 +75,6 @@
     register_android_server_location_GnssLocationProvider(env);
     register_android_server_location_FlpHardwareProvider(env);
     register_android_server_connectivity_Vpn(env);
-    register_android_server_AssetAtlasService(env);
     register_android_server_ConsumerIrService(env);
     register_android_server_BatteryStatsService(env);
     register_android_server_hdmi_HdmiCecController(env);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index c30d30f..54a3c14 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -496,12 +496,6 @@
                     }
                 });
             }
-            // STOPSHIP: Remove this code once all dogfood devices are fixed. See b/31754835
-            if (Intent.ACTION_BOOT_COMPLETED.equals(action) && !mOwners.hasDeviceOwner()
-                    && !isBackupServiceEnabledInternal()) {
-                setBackupServiceEnabledInternal(true);
-                Slog.w(LOG_TAG, "Fix backup for device that is not in Device Owner mode.");
-            }
             if (Intent.ACTION_USER_UNLOCKED.equals(action)
                     || Intent.ACTION_USER_STARTED.equals(action)
                     || KeyChain.ACTION_TRUST_STORE_CHANGED.equals(action)) {
@@ -617,7 +611,7 @@
         static final long DEF_MAXIMUM_TIME_TO_UNLOCK = 0;
         long maximumTimeToUnlock = DEF_MAXIMUM_TIME_TO_UNLOCK;
 
-        long strongAuthUnlockTimeout = DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS;
+        long strongAuthUnlockTimeout = 0; // admin doesn't participate by default
 
         static final int DEF_MAXIMUM_FAILED_PASSWORDS_FOR_WIPE = 0;
         int maximumFailedPasswordsForWipe = DEF_MAXIMUM_FAILED_PASSWORDS_FOR_WIPE;
@@ -4254,10 +4248,15 @@
             return;
         }
         Preconditions.checkNotNull(who, "ComponentName is null");
-        Preconditions.checkArgument(timeoutMs >= MINIMUM_STRONG_AUTH_TIMEOUT_MS,
-                "Timeout must not be lower than the minimum strong auth timeout.");
-        Preconditions.checkArgument(timeoutMs <= DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS,
-                "Timeout must not be higher than the default strong auth timeout.");
+        Preconditions.checkArgument(timeoutMs >= 0, "Timeout must not be a negative number.");
+        // timeoutMs with value 0 means that the admin doesn't participate
+        // timeoutMs is clamped to the interval in case the internal constants change in the future
+        if (timeoutMs != 0 && timeoutMs < MINIMUM_STRONG_AUTH_TIMEOUT_MS) {
+            timeoutMs = MINIMUM_STRONG_AUTH_TIMEOUT_MS;
+        }
+        if (timeoutMs > DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS) {
+            timeoutMs = DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS;
+        }
 
         final int userHandle = mInjector.userHandleGetCallingUserId();
         synchronized (this) {
@@ -4273,7 +4272,7 @@
     /**
      * Return a single admin's strong auth unlock timeout or minimum value (strictest) of all
      * admins if who is null.
-     * Returns default timeout if not configured.
+     * Returns 0 if not configured for the provided admin.
      */
     @Override
     public long getRequiredStrongAuthTimeout(ComponentName who, int userId, boolean parent) {
@@ -4284,9 +4283,7 @@
         synchronized (this) {
             if (who != null) {
                 ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userId, parent);
-                return admin != null ? Math.max(admin.strongAuthUnlockTimeout,
-                        MINIMUM_STRONG_AUTH_TIMEOUT_MS)
-                        : DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS;
+                return admin != null ? admin.strongAuthUnlockTimeout : 0;
             }
 
             // Return the strictest policy across all participating admins.
@@ -4294,8 +4291,10 @@
 
             long strongAuthUnlockTimeout = DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS;
             for (int i = 0; i < admins.size(); i++) {
-                strongAuthUnlockTimeout = Math.min(admins.get(i).strongAuthUnlockTimeout,
-                        strongAuthUnlockTimeout);
+                final long timeout = admins.get(i).strongAuthUnlockTimeout;
+                if (timeout != 0) { // take only participating admins into account
+                    strongAuthUnlockTimeout = Math.min(timeout, strongAuthUnlockTimeout);
+                }
             }
             return Math.max(strongAuthUnlockTimeout, MINIMUM_STRONG_AUTH_TIMEOUT_MS);
         }
@@ -9352,16 +9351,13 @@
             return true;
         }
         synchronized (this) {
-            getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
-            return isBackupServiceEnabledInternal();
-        }
-    }
-    private boolean isBackupServiceEnabledInternal() {
-        try {
-            IBackupManager ibm = mInjector.getIBackupManager();
-            return ibm != null && ibm.isBackupServiceActive(UserHandle.USER_SYSTEM);
-        } catch (RemoteException e) {
-            throw new IllegalStateException("Failed requesting backup service state.", e);
+            try {
+                getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
+                IBackupManager ibm = mInjector.getIBackupManager();
+                return ibm != null && ibm.isBackupServiceActive(UserHandle.USER_SYSTEM);
+            } catch (RemoteException e) {
+                throw new IllegalStateException("Failed requesting backup service state.", e);
+            }
         }
     }
 
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 769b5ee..deb5238 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -747,7 +747,6 @@
         LocationManagerService location = null;
         CountryDetectorService countryDetector = null;
         ILockSettings lockSettings = null;
-        AssetAtlasService atlas = null;
         MediaRouterService mediaRouter = null;
 
         // Bring up services needed for UI.
@@ -1235,17 +1234,6 @@
                 traceEnd();
             }
 
-            if (!disableNonCoreServices && ZygoteInit.PRELOAD_RESOURCES) {
-                traceBeginAndSlog("StartAssetAtlasService");
-                try {
-                    atlas = new AssetAtlasService(context);
-                    ServiceManager.addService(AssetAtlasService.ASSET_ATLAS_SERVICE, atlas);
-                } catch (Throwable e) {
-                    reportWtf("starting AssetAtlasService", e);
-                }
-                traceEnd();
-            }
-
             if (!disableNonCoreServices) {
                 traceBeginAndSlog("AddGraphicsStatsService");
                 ServiceManager.addService(GraphicsStatsService.GRAPHICS_STATS_SERVICE,
@@ -1465,7 +1453,6 @@
         final CountryDetectorService countryDetectorF = countryDetector;
         final NetworkTimeUpdateService networkTimeUpdaterF = networkTimeUpdater;
         final CommonTimeManagementService commonTimeMgmtServiceF = commonTimeMgmtService;
-        final AssetAtlasService atlasF = atlas;
         final InputManagerService inputManagerF = inputManager;
         final TelephonyRegistry telephonyRegistryF = telephonyRegistry;
         final MediaRouterService mediaRouterF = mediaRouter;
@@ -1583,13 +1570,6 @@
                     reportWtf("Notifying CommonTimeManagementService running", e);
                 }
                 traceEnd();
-                traceBeginAndSlog("MakeAtlasServiceReady");
-                try {
-                    if (atlasF != null) atlasF.systemRunning();
-                } catch (Throwable e) {
-                    reportWtf("Notifying AssetAtlasService running", e);
-                }
-                traceEnd();
                 traceBeginAndSlog("MakeInputManagerServiceReady");
                 try {
                     // TODO(BT) Pass parameter to input manager
diff --git a/services/net/java/android/net/apf/ApfFilter.java b/services/net/java/android/net/apf/ApfFilter.java
index 957a8d3..18d69ec 100644
--- a/services/net/java/android/net/apf/ApfFilter.java
+++ b/services/net/java/android/net/apf/ApfFilter.java
@@ -379,16 +379,16 @@
         // TODO: Make this static once RA is its own class.
         private void prefixOptionToString(StringBuffer sb, int offset) {
             String prefix = IPv6AddresstoString(offset + 16);
-            int length = uint8(mPacket.get(offset + 2));
-            long valid = mPacket.getInt(offset + 4);
-            long preferred = mPacket.getInt(offset + 8);
+            int length = getUint8(mPacket, offset + 2);
+            long valid = getUint32(mPacket, offset + 4);
+            long preferred = getUint32(mPacket, offset + 8);
             sb.append(String.format("%s/%d %ds/%ds ", prefix, length, valid, preferred));
         }
 
         private void rdnssOptionToString(StringBuffer sb, int offset) {
-            int optLen = uint8(mPacket.get(offset + 1)) * 8;
+            int optLen = getUint8(mPacket, offset + 1) * 8;
             if (optLen < 24) return;  // Malformed or empty.
-            long lifetime = uint32(mPacket.getInt(offset + 4));
+            long lifetime = getUint32(mPacket, offset + 4);
             int numServers = (optLen - 8) / 16;
             sb.append("DNS ").append(lifetime).append("s");
             for (int server = 0; server < numServers; server++) {
@@ -402,7 +402,7 @@
                 sb.append(String.format("RA %s -> %s %ds ",
                         IPv6AddresstoString(IPV6_SRC_ADDR_OFFSET),
                         IPv6AddresstoString(IPV6_DEST_ADDR_OFFSET),
-                        uint16(mPacket.getShort(ICMP6_RA_ROUTER_LIFETIME_OFFSET))));
+                        getUint16(mPacket, ICMP6_RA_ROUTER_LIFETIME_OFFSET)));
                 for (int i: mPrefixOptionOffsets) {
                     prefixOptionToString(sb, i);
                 }
@@ -454,8 +454,8 @@
             // Sanity check packet in case a packet arrives before we attach RA filter
             // to our packet socket. b/29586253
             if (getUint16(mPacket, ETH_ETHERTYPE_OFFSET) != ETH_P_IPV6 ||
-                    uint8(mPacket.get(IPV6_NEXT_HEADER_OFFSET)) != IPPROTO_ICMPV6 ||
-                    uint8(mPacket.get(ICMP6_TYPE_OFFSET)) != ICMP6_ROUTER_ADVERTISEMENT) {
+                    getUint8(mPacket, IPV6_NEXT_HEADER_OFFSET) != IPPROTO_ICMPV6 ||
+                    getUint8(mPacket, ICMP6_TYPE_OFFSET) != ICMP6_ROUTER_ADVERTISEMENT) {
                 throw new InvalidRaException("Not an ICMP6 router advertisement");
             }
 
@@ -477,8 +477,8 @@
             mPacket.position(ICMP6_RA_OPTION_OFFSET);
             while (mPacket.hasRemaining()) {
                 final int position = mPacket.position();
-                final int optionType = uint8(mPacket.get(position));
-                final int optionLength = uint8(mPacket.get(position + 1)) * 8;
+                final int optionType = getUint8(mPacket, position);
+                final int optionLength = getUint8(mPacket, position + 1) * 8;
                 long lifetime;
                 switch (optionType) {
                     case ICMP6_PREFIX_OPTION_TYPE:
@@ -563,10 +563,10 @@
                 final long optionLifetime;
                 switch (lifetimeLength) {
                     case 2:
-                        optionLifetime = uint16(byteBuffer.getShort(offset));
+                        optionLifetime = getUint16(byteBuffer, offset);
                         break;
                     case 4:
-                        optionLifetime = uint32(byteBuffer.getInt(offset));
+                        optionLifetime = getUint32(byteBuffer, offset);
                         break;
                     default:
                         throw new IllegalStateException("bogus lifetime size " + lifetimeLength);
@@ -1162,7 +1162,11 @@
         return i & 0xffffffffL;
     }
 
-    private static long getUint16(ByteBuffer buffer, int position) {
+    private static int getUint8(ByteBuffer buffer, int position) {
+        return uint8(buffer.get(position));
+    }
+
+    private static int getUint16(ByteBuffer buffer, int position) {
         return uint16(buffer.getShort(position));
     }
 
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java
index 1feb816..6558b6e 100644
--- a/services/print/java/com/android/server/print/PrintManagerService.java
+++ b/services/print/java/com/android/server/print/PrintManagerService.java
@@ -728,7 +728,8 @@
                 @Override
                 public void onPackageModified(String packageName) {
                     if (!mUserManager.isUserUnlockingOrUnlocked(getChangingUserId())) return;
-                    UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false);
+                    UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false,
+                            false /* enforceUserUnlockingOrUnlocked */);
 
                     synchronized (mLock) {
                         if (hadPrintService(userState, packageName)
@@ -743,7 +744,8 @@
                 @Override
                 public void onPackageRemoved(String packageName, int uid) {
                     if (!mUserManager.isUserUnlockingOrUnlocked(getChangingUserId())) return;
-                    UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false);
+                    UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false,
+                            false /* enforceUserUnlockingOrUnlocked */);
 
                     synchronized (mLock) {
                         if (hadPrintService(userState, packageName)) {
@@ -762,8 +764,8 @@
                         // A background user/profile's print jobs are running but there is
                         // no UI shown. Hence, if the packages of such a user change we need
                         // to handle it as the change may affect ongoing print jobs.
-                        UserState userState = getOrCreateUserStateLocked(getChangingUserId(),
-                                false);
+                        UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false,
+                                false /* enforceUserUnlockingOrUnlocked */);
                         boolean stoppedSomePackages = false;
 
                         List<PrintServiceInfo> enabledServices = userState
@@ -799,7 +801,7 @@
                     synchronized (mLock) {
                         if (hasPrintService(packageName)) {
                             UserState userState = getOrCreateUserStateLocked(getChangingUserId(),
-                                    false);
+                                    false, false /* enforceUserUnlockingOrUnlocked */);
                             userState.updateIfNeededLocked();
                         }
                     }
@@ -810,9 +812,14 @@
             monitor.register(mContext, BackgroundThread.getHandler().getLooper(),
                     UserHandle.ALL, true);
         }
-
         private UserState getOrCreateUserStateLocked(int userId, boolean lowPriority) {
-            if (!mUserManager.isUserUnlockingOrUnlocked(userId)) {
+            return getOrCreateUserStateLocked(userId, lowPriority,
+                    true /* enforceUserUnlockingOrUnlocked */);
+        }
+
+        private UserState getOrCreateUserStateLocked(int userId, boolean lowPriority,
+                boolean enforceUserUnlockingOrUnlocked) {
+            if (enforceUserUnlockingOrUnlocked && !mUserManager.isUserUnlockingOrUnlocked(userId)) {
                 throw new IllegalStateException(
                         "User " + userId + " must be unlocked for printing to be available");
             }
@@ -840,7 +847,8 @@
 
                     UserState userState;
                     synchronized (mLock) {
-                        userState = getOrCreateUserStateLocked(userId, true);
+                        userState = getOrCreateUserStateLocked(userId, true,
+                                false /*enforceUserUnlockingOrUnlocked */);
                         userState.updateIfNeededLocked();
                     }
                     // This is the first time we switch to this user after boot, so
diff --git a/services/tests/servicestests/src/com/android/server/connectivity/NetdEventListenerServiceTest.java b/services/tests/servicestests/src/com/android/server/connectivity/NetdEventListenerServiceTest.java
index 63d5d9fb..9e2fd62 100644
--- a/services/tests/servicestests/src/com/android/server/connectivity/NetdEventListenerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/connectivity/NetdEventListenerServiceTest.java
@@ -158,7 +158,8 @@
 
     void log(int netId, int[] latencies) {
         for (int l : latencies) {
-            mNetdEventListenerService.onDnsEvent(netId, EVENT_TYPE, RETURN_CODE, l);
+            mNetdEventListenerService.onDnsEvent(netId, EVENT_TYPE, RETURN_CODE, l, null, null, 0,
+                    0);
         }
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index 01b2c3b..56ff621 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -1915,6 +1915,61 @@
         verifyScreenTimeoutCall(Integer.MAX_VALUE, false);
     }
 
+    public void testSetRequiredStrongAuthTimeout_DeviceOwner() throws Exception {
+        mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
+        setupDeviceOwner();
+        mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS);
+
+        final long MINIMUM_STRONG_AUTH_TIMEOUT_MS = 1 * 60 * 60 * 1000; // 1h
+        final long ONE_MINUTE = 60 * 1000;
+
+        // aggregation should be the default if unset by any admin
+        assertEquals(dpm.getRequiredStrongAuthTimeout(null),
+                DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS);
+
+        // admin not participating by default
+        assertEquals(dpm.getRequiredStrongAuthTimeout(admin1), 0);
+
+        //clamping from the top
+        dpm.setRequiredStrongAuthTimeout(admin1,
+                DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS + ONE_MINUTE);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(admin1),
+                DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(null),
+                DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS);
+
+        // 0 means default
+        dpm.setRequiredStrongAuthTimeout(admin1, 0);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(admin1), 0);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(null),
+                DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS);
+
+        // clamping from the bottom
+        dpm.setRequiredStrongAuthTimeout(admin1, MINIMUM_STRONG_AUTH_TIMEOUT_MS - ONE_MINUTE);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(admin1), MINIMUM_STRONG_AUTH_TIMEOUT_MS);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(null), MINIMUM_STRONG_AUTH_TIMEOUT_MS);
+
+        // value within range
+        dpm.setRequiredStrongAuthTimeout(admin1, MINIMUM_STRONG_AUTH_TIMEOUT_MS + ONE_MINUTE);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(admin1), MINIMUM_STRONG_AUTH_TIMEOUT_MS
+                + ONE_MINUTE);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(null), MINIMUM_STRONG_AUTH_TIMEOUT_MS
+                + ONE_MINUTE);
+
+        // reset to default
+        dpm.setRequiredStrongAuthTimeout(admin1, 0);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(admin1), 0);
+        assertEquals(dpm.getRequiredStrongAuthTimeout(null),
+                DevicePolicyManager.DEFAULT_STRONG_AUTH_TIMEOUT_MS);
+
+        // negative value
+        try {
+            dpm.setRequiredStrongAuthTimeout(admin1, -ONE_MINUTE);
+            fail("Didn't throw IllegalArgumentException");
+        } catch (IllegalArgumentException iae) {
+        }
+    }
+
     private void verifyScreenTimeoutCall(Integer expectedTimeout,
             boolean shouldStayOnWhilePluggedInBeCleared) {
         if (expectedTimeout == null) {
diff --git a/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenTests.java b/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenTests.java
index 27d9d10..74e8c9d 100644
--- a/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenTests.java
@@ -76,15 +76,14 @@
     private WindowState createWindow(WindowState parent, int type, WindowToken token) {
         final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(type);
 
-        return new WindowState(sWm, null, mIWindow, token, parent, 0, 0, attrs, 0,
-                sWm.getDefaultDisplayContentLocked(), 0);
+        return new WindowState(sWm, null, mIWindow, token, parent, 0, 0, attrs, 0, 0);
     }
 
     /* Used so we can gain access to some protected members of the {@link AppWindowToken} class */
     private class TestAppWindowToken extends AppWindowToken {
 
         TestAppWindowToken() {
-            super(sWm, null, false);
+            super(sWm, null, false, sWm.getDefaultDisplayContentLocked());
         }
 
         int getWindowsCount() {
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java
index 1259e0f..3df1df9 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java
@@ -58,7 +58,8 @@
     public void setUp() throws Exception {
         final Context context = InstrumentationRegistry.getTargetContext();
         sWm = TestWindowManagerPolicy.getWindowManagerService(context);
-        mWindowToken = new WindowToken(sWm, new Binder(), 0, false);
+        mWindowToken = new WindowToken(sWm, new Binder(), 0, false,
+                sWm.getDefaultDisplayContentLocked());
     }
 
     @Test
@@ -162,7 +163,6 @@
     private WindowState createWindow(WindowState parent, int type) {
         final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(type);
 
-        return new WindowState(sWm, null, mIWindow, mWindowToken, parent, 0, 0, attrs, 0,
-                sWm.getDefaultDisplayContentLocked(), 0);
+        return new WindowState(sWm, null, mIWindow, mWindowToken, parent, 0, 0, attrs, 0, 0);
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowTokenTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowTokenTests.java
index 3279886..1a4dff9 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowTokenTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowTokenTests.java
@@ -157,15 +157,14 @@
     private WindowState createWindow(WindowState parent, int type, WindowToken token) {
         final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(type);
 
-        return new WindowState(mWm, null, mIWindow, token, parent, 0, 0, attrs, 0,
-                mWm.getDefaultDisplayContentLocked(), 0);
+        return new WindowState(mWm, null, mIWindow, token, parent, 0, 0, attrs, 0, 0);
     }
 
     /* Used so we can gain access to some protected members of the {@link WindowToken} class */
     private class TestWindowToken extends WindowToken {
 
         TestWindowToken() {
-            super(mWm, null, 0, false);
+            super(mWm, null, 0, false, mWm.getDefaultDisplayContentLocked());
         }
 
         int getWindowsCount() {
diff --git a/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java b/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java
index cc0fb8d..e03a14f 100644
--- a/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java
+++ b/services/usb/java/com/android/server/usb/UsbProfileGroupSettingsManager.java
@@ -34,6 +34,7 @@
 import android.hardware.usb.UsbDevice;
 import android.hardware.usb.UsbInterface;
 import android.hardware.usb.UsbManager;
+import android.os.AsyncTask;
 import android.os.Environment;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -42,6 +43,7 @@
 import android.util.Slog;
 import android.util.Xml;
 
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.Immutable;
 import com.android.internal.content.PackageMonitor;
 import com.android.internal.util.FastXmlSerializer;
@@ -60,7 +62,9 @@
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import libcore.io.IoUtils;
 
@@ -87,14 +91,24 @@
     private final UserManager mUserManager;
     private final @NonNull UsbSettingsManager mSettingsManager;
 
-    // Maps DeviceFilter to user preferred application package
+    /** Maps DeviceFilter to user preferred application package */
+    @GuardedBy("mLock")
     private final HashMap<DeviceFilter, UserPackage> mDevicePreferenceMap = new HashMap<>();
-    // Maps AccessoryFilter to user preferred application package
+
+    /** Maps AccessoryFilter to user preferred application package */
+    @GuardedBy("mLock")
     private final HashMap<AccessoryFilter, UserPackage> mAccessoryPreferenceMap = new HashMap<>();
 
     private final Object mLock = new Object();
 
     /**
+     * If a async task to persist the mDevicePreferenceMap and mAccessoryPreferenceMap is currently
+     * scheduled.
+     */
+    @GuardedBy("mLock")
+    private boolean mIsWriteSettingsScheduled;
+
+    /**
      * A package of a user.
      */
     @Immutable
@@ -591,6 +605,42 @@
                 });
     }
 
+    /**
+     * Remove all defaults for a user.
+     *
+     * @param userToRemove The user the defaults belong to.
+     */
+    void removeAllDefaultsForUser(@NonNull UserHandle userToRemove) {
+        synchronized (mLock) {
+            boolean needToPersist = false;
+            Iterator<Map.Entry<DeviceFilter, UserPackage>> devicePreferenceIt = mDevicePreferenceMap
+                    .entrySet().iterator();
+            while (devicePreferenceIt.hasNext()) {
+                Map.Entry<DeviceFilter, UserPackage> entry = devicePreferenceIt.next();
+
+                if (entry.getValue().user.equals(userToRemove)) {
+                    devicePreferenceIt.remove();
+                    needToPersist = true;
+                }
+            }
+
+            Iterator<Map.Entry<AccessoryFilter, UserPackage>> accessoryPreferenceIt =
+                    mAccessoryPreferenceMap.entrySet().iterator();
+            while (accessoryPreferenceIt.hasNext()) {
+                Map.Entry<AccessoryFilter, UserPackage> entry = accessoryPreferenceIt.next();
+
+                if (entry.getValue().user.equals(userToRemove)) {
+                    accessoryPreferenceIt.remove();
+                    needToPersist = true;
+                }
+            }
+
+            if (needToPersist) {
+                scheduleWriteSettingsLocked();
+            }
+        }
+    }
+
     private void readPreference(XmlPullParser parser)
             throws XmlPullParserException, IOException {
         String packageName = null;
@@ -657,7 +707,7 @@
                 IoUtils.closeQuietly(fis);
             }
 
-            writeSettingsLocked();
+            scheduleWriteSettingsLocked();
 
             // Success or failure, we delete single-user file
             sSingleUserSettingsFile.delete();
@@ -695,48 +745,68 @@
         }
     }
 
-    private void writeSettingsLocked() {
-        if (DEBUG) Slog.v(TAG, "writeSettingsLocked()");
-
-        FileOutputStream fos = null;
-        try {
-            fos = mSettingsFile.startWrite();
-
-            FastXmlSerializer serializer = new FastXmlSerializer();
-            serializer.setOutput(fos, StandardCharsets.UTF_8.name());
-            serializer.startDocument(null, true);
-            serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
-            serializer.startTag(null, "settings");
-
-            for (DeviceFilter filter : mDevicePreferenceMap.keySet()) {
-                serializer.startTag(null, "preference");
-                serializer.attribute(null, "package", mDevicePreferenceMap.get(filter).packageName);
-                serializer.attribute(null, "user",
-                        String.valueOf(getSerial(mDevicePreferenceMap.get(filter).user)));
-                filter.write(serializer);
-                serializer.endTag(null, "preference");
-            }
-
-            for (AccessoryFilter filter : mAccessoryPreferenceMap.keySet()) {
-                serializer.startTag(null, "preference");
-                serializer.attribute(null, "package",
-                        mAccessoryPreferenceMap.get(filter).packageName);
-                serializer.attribute(null, "user",
-                        String.valueOf(getSerial(mAccessoryPreferenceMap.get(filter).user)));
-                filter.write(serializer);
-                serializer.endTag(null, "preference");
-            }
-
-            serializer.endTag(null, "settings");
-            serializer.endDocument();
-
-            mSettingsFile.finishWrite(fos);
-        } catch (IOException e) {
-            Slog.e(TAG, "Failed to write settings", e);
-            if (fos != null) {
-                mSettingsFile.failWrite(fos);
-            }
+    /**
+     * Schedule a async task to persist {@link #mDevicePreferenceMap} and
+     * {@link #mAccessoryPreferenceMap}. If a task is already scheduled but not completed, do
+     * nothing as the currently scheduled one will do the work.
+     * <p>Called with {@link #mLock} held.</p>
+     * <p>In the uncommon case that the system crashes in between the scheduling and the write the
+     * update is lost.</p>
+     */
+    private void scheduleWriteSettingsLocked() {
+        if (mIsWriteSettingsScheduled) {
+            return;
+        } else {
+            mIsWriteSettingsScheduled = true;
         }
+
+        AsyncTask.execute(() -> {
+            synchronized (mLock) {
+                FileOutputStream fos = null;
+                try {
+                    fos = mSettingsFile.startWrite();
+
+                    FastXmlSerializer serializer = new FastXmlSerializer();
+                    serializer.setOutput(fos, StandardCharsets.UTF_8.name());
+                    serializer.startDocument(null, true);
+                    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output",
+                                    true);
+                    serializer.startTag(null, "settings");
+
+                    for (DeviceFilter filter : mDevicePreferenceMap.keySet()) {
+                        serializer.startTag(null, "preference");
+                        serializer.attribute(null, "package",
+                                mDevicePreferenceMap.get(filter).packageName);
+                        serializer.attribute(null, "user",
+                                String.valueOf(getSerial(mDevicePreferenceMap.get(filter).user)));
+                        filter.write(serializer);
+                        serializer.endTag(null, "preference");
+                    }
+
+                    for (AccessoryFilter filter : mAccessoryPreferenceMap.keySet()) {
+                        serializer.startTag(null, "preference");
+                        serializer.attribute(null, "package",
+                                mAccessoryPreferenceMap.get(filter).packageName);
+                        serializer.attribute(null, "user", String.valueOf(
+                                        getSerial(mAccessoryPreferenceMap.get(filter).user)));
+                        filter.write(serializer);
+                        serializer.endTag(null, "preference");
+                    }
+
+                    serializer.endTag(null, "settings");
+                    serializer.endDocument();
+
+                    mSettingsFile.finishWrite(fos);
+                } catch (IOException e) {
+                    Slog.e(TAG, "Failed to write settings", e);
+                    if (fos != null) {
+                        mSettingsFile.failWrite(fos);
+                    }
+                }
+
+                mIsWriteSettingsScheduled = false;
+            }
+        });
     }
 
     // Checks to see if a package matches a device or accessory.
@@ -1141,7 +1211,7 @@
             }
 
             if (changed) {
-                writeSettingsLocked();
+                scheduleWriteSettingsLocked();
             }
         }
     }
@@ -1178,7 +1248,7 @@
                 }
             }
             if (changed) {
-                writeSettingsLocked();
+                scheduleWriteSettingsLocked();
             }
         }
     }
@@ -1204,7 +1274,7 @@
                 }
             }
             if (changed) {
-                writeSettingsLocked();
+                scheduleWriteSettingsLocked();
             }
         }
     }
@@ -1237,7 +1307,7 @@
 
         synchronized (mLock) {
             if (clearPackageDefaultsLocked(userPackage)) {
-                writeSettingsLocked();
+                scheduleWriteSettingsLocked();
             }
         }
     }
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index 02c7214..c85b363 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -16,6 +16,7 @@
 
 package com.android.server.usb;
 
+import android.annotation.NonNull;
 import android.annotation.UserIdInt;
 import android.app.PendingIntent;
 import android.app.admin.DevicePolicyManager;
@@ -83,7 +84,7 @@
 
         @Override
         public void onStopUser(int userHandle) {
-            mUsbService.onStopUser(userHandle);
+            mUsbService.onStopUser(UserHandle.of(userHandle));
         }
     }
 
@@ -177,10 +178,10 @@
     /**
      * Execute operations when a user is stopped.
      *
-     * @param stoppedUserId The id of the used that is stopped
+     * @param stoppedUser The user that is stopped
      */
-    private void onStopUser(@UserIdInt int stoppedUserId) {
-        mSettingsManager.remove(stoppedUserId);
+    private void onStopUser(@NonNull UserHandle stoppedUser) {
+        mSettingsManager.remove(stoppedUser);
     }
 
     public void systemReady() {
diff --git a/services/usb/java/com/android/server/usb/UsbSettingsManager.java b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
index b251d26..24d5f09 100644
--- a/services/usb/java/com/android/server/usb/UsbSettingsManager.java
+++ b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
@@ -108,11 +108,26 @@
     /**
      * Remove the settings for a user.
      *
-     * @param userIdToRemove The user o remove
+     * @param userToRemove The user to remove
      */
-    void remove(@UserIdInt int userIdToRemove) {
+    void remove(@NonNull UserHandle userToRemove) {
         synchronized (mSettingsByUser) {
-            mSettingsByUser.remove(userIdToRemove);
+            mSettingsByUser.remove(userToRemove.getIdentifier());
+        }
+
+        synchronized (mSettingsByProfileGroup) {
+            if (mSettingsByProfileGroup.indexOfKey(userToRemove.getIdentifier()) >= 0) {
+                // The user to remove is the parent user of the group. The parent is the last user
+                // that gets removed. All state will be removed with the user
+                mSettingsByProfileGroup.remove(userToRemove.getIdentifier());
+            } else {
+                // We cannot find the parent user of the user that is removed, hence try to remove
+                // it from all profile groups.
+                int numProfileGroups = mSettingsByProfileGroup.size();
+                for (int i = 0; i < numProfileGroups; i++) {
+                    mSettingsByProfileGroup.valueAt(i).removeAllDefaultsForUser(userToRemove);
+                }
+            }
         }
     }
 
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index deed6d4..ea8301b 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -57,6 +57,13 @@
     // system image, that can be added in packages/apps/CarrierConfig.
 
     /**
+     * This flag specifies whether VoLTE availability is based on provisioning. By default this is
+     * false.
+     */
+    public static final String
+            KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool";
+
+    /**
      * Flag indicating whether the Phone app should ignore EVENT_SIM_NETWORK_LOCKED
      * events from the Sim.
      * If true, this will prevent the IccNetworkDepersonalizationPanel from being shown, and
@@ -1081,6 +1088,8 @@
         sDefaults.putBoolean(KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL, false);
         sDefaults.putBoolean(KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL, false);
         sDefaults.putBoolean(KEY_HIDE_SIM_LOCK_SETTINGS_BOOL, false);
+
+        sDefaults.putBoolean(KEY_CARRIER_VOLTE_PROVISIONED_BOOL, false);
         sDefaults.putBoolean(KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL, false);
         sDefaults.putBoolean(KEY_OPERATOR_SELECTION_EXPAND_BOOL, true);
         sDefaults.putBoolean(KEY_PREFER_2G_BOOL, true);
diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
index a4aab7c..da27ea9 100644
--- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
+++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
@@ -87,6 +87,11 @@
     }
 
     private Test[] mTests = new Test[] {
+            new Test("cancel all") {
+                public void run() {
+                    mNM.cancelAll();
+                }
+            },
             new Test("Phone call") {
                 public void run()
                 {
diff --git a/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
index bcfe3bf..090cee8 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Bitmap_Delegate.java
@@ -601,14 +601,6 @@
         return Arrays.equals(argb1, argb2);
     }
 
-    // Only used by AssetAtlasService, which we don't care about.
-    @LayoutlibDelegate
-    /*package*/ static long nativeRefPixelRef(long nativeBitmap) {
-        // Hack: This is called by Bitmap.refSkPixelRef() and LayoutLib uses that method to get
-        // the native pointer from a Bitmap. So, we return nativeBitmap here.
-        return nativeBitmap;
-    }
-
     // ---- Private delegate/helper methods ----
 
     private Bitmap_Delegate(BufferedImage image, Config config) {